Sql server 连接到同一数据库,但作为另一个用户,无需硬编码连接字符串

Sql server 连接到同一数据库,但作为另一个用户,无需硬编码连接字符串,sql-server,stored-procedures,Sql Server,Stored Procedures,我可以使用存储过程中的OPENDATASOURCE(或其他机制)作为不同用户连接到同一数据库吗?如果是,怎么做 数据库将部署到多个客户,并由他们复制任意次数,等等。因此,我无法硬编码数据库服务器的名称或数据库的名称 (我尝试使用了OPENDATASOURCE,但它只接受硬编码的连接字符串。)您可以使用登录的当前安全上下文(或适用于您的情况的其他选项)设置链接服务器以连接到远程服务器 从存储过程中,您可以使用类似于mylinkedservername.mylinkedserverdatabase.

我可以使用存储过程中的
OPENDATASOURCE
(或其他机制)作为不同用户连接到同一数据库吗?如果是,怎么做

数据库将部署到多个客户,并由他们复制任意次数,等等。因此,我无法硬编码数据库服务器的名称或数据库的名称


(我尝试使用了
OPENDATASOURCE
,但它只接受硬编码的连接字符串。)

您可以使用登录的当前安全上下文(或适用于您的情况的其他选项)设置链接服务器以连接到远程服务器

从存储过程中,您可以使用类似于mylinkedservername.mylinkedserverdatabase.dbo.mytable的
SELECT*来访问它


但是你说你想连接到同一个数据库,但使用不同的登录名?你在找模仿。也许你可以制作一个引用自身的链接服务器,我还没有试过。搜索Microsoft帮助文档,了解如何正常设置它,并测试它是否符合您的要求。

您可以使用登录的当前安全上下文(或适用于您的情况的其他选项)设置链接服务器以连接到远程服务器

从存储过程中,您可以使用类似于mylinkedservername.mylinkedserverdatabase.dbo.mytable的
SELECT*来访问它



但是你说你想连接到同一个数据库,但使用不同的登录名?你在找模仿。也许你可以制作一个引用自身的链接服务器,我还没有试过。搜索Microsoft帮助文档,了解如何正常设置它,并测试它是否符合您的要求。

在您的情况下,
是否可以执行

在您的情况下,
是否可以作为
工作执行

你看过设置链接服务器吗?@JustinStolle:我不知道如何使用链接服务器。我觉得很奇怪,我找不到任何理由说明为什么在你展示代码时参数化的varchar不应该工作。事实上,我在任何地方都找不到这个定义!我想这里所有罪恶的根源都是意义;-)祝你好运@斯蒂芬:是的,在21世纪初,随着谷歌搜索质量的提高,MSDN文档的质量下降了。@Eduardo我也在enterprise manager中尝试了搜索,但没有结果,非常奇怪的是,它只是拒绝说它是什么类型的,所以不可能说它为什么不喜欢varchar参数imo!你看过设置链接服务器吗?@JustinStolle:我不知道如何使用链接服务器。我觉得很奇怪,我找不到任何理由说明为什么在你展示代码时参数化的varchar不应该工作。事实上,我在任何地方都找不到这个定义!我想这里所有罪恶的根源都是意义;-)祝你好运@斯蒂芬:是的,在21世纪初,随着谷歌搜索质量的提高,MSDN文档的质量下降了。@Eduardo我也在enterprise manager中尝试了搜索,但没有结果,非常奇怪的是,它只是拒绝说它是什么类型的,所以不可能说它为什么不喜欢varchar参数imo!我一直在读有关链接服务器的文章,现在我在想。。。使用链接到同一数据库的服务器真的是个好主意吗?是的,我正在寻找模拟。我正在处理一个愚蠢的设计,它使用数据库用户作为应用程序用户,但当你想脱机工作时,整个设计都会中断,并且无法将密码保存在内存中(哦,不,它完全不是RESTful!)。我一直在读有关链接服务器的文章,现在我在想。。。使用链接到同一数据库的服务器真的是个好主意吗?是的,我正在寻找模拟。我正在处理一个愚蠢的设计,它使用数据库用户作为应用程序用户,但是当您想要脱机工作时,整个设计都会中断,并且无法将密码保存在内存中(哦,不,它完全不是RESTful!)。我来检查一下。我还没有读完全部内容,但似乎这就是答案。该页面上的示例代码看起来非常有用。您必须向用户授予模拟权限,然后确定如何作为另一个登录名(与当前数据库中的另一个用户相反,因为您要访问另一个数据库)可靠地执行
。我不想授予模拟权限。我想以另一个用户的身份使用他的帐户名和密码登录。好的,您需要为自己授予听起来像是其他用户的模拟权限。MSDN页面上的示例A给出了一个很好的概述。我会检查。我还没有读完全部内容,但似乎这就是答案。该页面上的示例代码看起来非常有用。您必须向用户授予模拟权限,然后确定如何作为另一个登录名(与当前数据库中的另一个用户相反,因为您要访问另一个数据库)可靠地执行
。我不想授予模拟权限。我想以另一个用户的身份使用他的帐户名和密码登录。好的,您需要为自己授予听起来像是其他用户的模拟权限。MSDN页面上的示例A给出了一个很好的概述。