SQL Linked Server выдает ошибку "нет сопоставления входа", если используется учетная запись не администратора
у меня есть локальный SQL Server 2008R2. Я настроил связанный сервер для удаленной базы данных.
связанный сервер отлично работает при входе на локальный сервер с помощью учетной записи SQL-login с sysadmin
роль сервера. Я могу запросить удаленный сервер, поэтому я знаю, что параметр связанного сервера верен. Однако я бы получил ошибку ниже, если я использую учетную запись, у которой нет sysadmin
роль сервера.
Msg 7416, Level 16, State 2, Line 2
Access to the remote server is denied because no login-mapping exists.
для локальных и удаленных серверов, SQL login используется (проверка подлинности Windows не используется)
какую безопасность мне нужно настроить для обычной учетной записи SQL-login для использования связанного сервера?
2 ответов
по данным этот блог, Я должен указать User ID
в строке поставщика, если используются учетные записи, отличные от sysadmin. Вот пример.
EXEC master.dbo.sp_addlinkedserver
@server = N'MyLinkServerName',
@provider = N'SQLNCLI',
@srvproduct = 'SQLNCLI',
@provstr = N'SERVER=MyServerName\MyInstanceName;User ID=myUser'
Это точно соответствует тому, с чем я столкнулся, и это решает мою проблему.
в качестве альтернативного решения вы можете использовать параметр @datasrc вместо @provstr. @dataSrc работает без установки идентификатора пользователя
пример:
EXEC master.dbo.sp_addlinkedserver @server = N'LinkServerName', @provider=N'SQLNCLI',@srvproduct = 'MS SQL Server', @datasrc=N'serverName\InstanceName'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'LinkServerName', @locallogin = NULL , @useself = N'False', @rmtuser = N'myUser', @rmtpassword = N'*****'
Я добавил комментарий здесь тоже, но его не видно (не знаю почему).