Ошибка при выполнении запроса с использованием OPENDATASOURCE - PullRequest
1 голос
/ 27 марта 2012

Я подключаюсь к своей базе данных, используя аутентификацию SQL (не пользователь sa) из SQL Server Management Studio.Когда я выполняю следующий запрос, я получаю сообщение «Доступ к удаленному серверу запрещен, поскольку не существует сопоставления входа в систему».

EXEC OPENDATASOURCE('SQLNCLI','Server=MyServer;Trusted_Connection=yes;').Database.dbo.myStoredProcedure

Если я подключаюсь к SQL Server Management Studio как sa, запрос выполняется безошибка.

Как выполнить запрос OPENDATASOURCE, подключившись к SQL Server Management Studio как пользователь не-sa с аутентификацией sql без указания имени пользователя и пароля в запросе?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2013

Вы можете создать временный связанный сервер и затем удалить его. При этом будут использоваться учетные данные пользователя 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'
0 голосов
/ 27 марта 2012

Учетная запись sa будет выполнять OPENDATASOURCE при входе в учетную запись службы Windows. Это один из обходных путей.

EXEC N'
EXEC OPENDATASOURCE(''SQLNCLI'',''Server=MyServer;Trusted_Connection=yes;'').Database.dbo.myStoredProcedure'
AS LOGIN = 'sa'; 

Но на самом деле вы должны настроить учетные данные sql на удаленном сервере. Затем замените Trusted Connection на ваши User ID и Password. Если вы не хотите добавлять идентификатор пользователя и пароль в запрос, установите его как связанный сервер.

http://msdn.microsoft.com/en-us/library/ms179856(v=sql.100).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...