我使用SQL Server Management Studio中的SQL身份验证(非sa用户)连接到我的数据库。当我执行以下查询时,我得到“拒绝访问远程服务器,因为不存在登录映射。”
EXEC OPENDATASOURCE('SQLNCLI','Server=MyServer;Trusted_Connection=yes;').Database.dbo.myStoredProcedure
如果我以sa身份连接到SQL Server Management Studio,则执行查询时不会出现任何错误。
如何通过在sql身份验证下以非sa用户身份连接到SQL Server Management Studio而不在查询中提供用户名和密码来执行OPENDATASOURCE查询?
答案 0 :(得分:0)
sa帐户将执行OPENDATASOURCE
作为Windows服务帐户登录。
这是一种解决方法。
EXEC N'
EXEC OPENDATASOURCE(''SQLNCLI'',''Server=MyServer;Trusted_Connection=yes;'').Database.dbo.myStoredProcedure'
AS LOGIN = 'sa';
但实际上你应该在远程服务器上设置你的sql凭据。
然后使用User ID
和Password
替换可信连接。
如果您不想在查询中添加用户标识和密码,请将其设置为链接服务器。
http://msdn.microsoft.com/en-us/library/ms179856(v=sql.100).aspx
答案 1 :(得分:0)
您可以创建临时链接服务器,然后将其删除。这将使用当前登录的SQL用户凭据,并假设其他框上存在相同的用户:
exec sp_addlinkedserver @server='MyServer', @srvproduct='SQL Server'
exec sp_addlinkedsrvlogin @rmtsrvname='MyServer', @locallogin=null, @useself='True'
exec('exec [MyServer].Database.dbo.myStoredProcedure')
exec sp_dropserver 'MyServer', 'droplogins'