2016-07-25 1 views
0

У меня есть два сервера баз данных. Один на офисном компьютере и один на веб-сервере. Существует безопасный зашифрованный туннель между двумя компьютерами через Интернет. Пользователь SQL Server настроен на ПК веб-сервера, чтобы разрешить доступ к нуждающимся таблицам.Можно видеть только таблицы на связанном сервере через администратора. Не как пользователь SQL-сервера

На домашнем компьютере есть локальная учетная запись, которая нуждается в доступе к этим связанным таблицам.

Связанный сервер устанавливается между компьютерами. Из интерфейса sysadmin в SQL Server Management Studio я могу свободно просматривать таблицы на связанном сервере.

но если войти как пользователь SQL Server, и я пытаюсь тест соединения

=================================== 

The test connection to the linked server failed. 

=================================== 

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo) 

------------------------------ 
Program Location: 

    at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType) 
    at Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(String cmd) 
    at Microsoft.SqlServer.Management.Smo.LinkedServer.TestConnection() 
    at Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.LinkedServerConnectionTest.Invoke() 

=================================== 

Access to the remote server is denied because no login-mapping exists. (.Net SqlClient Data Provider) 

------------------------------ 
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=11.00.5058&EvtSrc=MSSQLServer&EvtID=7416&LinkId=20476 

------------------------------ 
Server Name: SERVER\INSTANCE 
Error Number: 7416 
Severity: 16 
State: 2 
Procedure: sp_testlinkedserver 
Line Number: 1 


------------------------------ 
Program Location: 

    at Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException) 
    at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType) 

Что я пытался до сих пор

  • Добавление локальных и удаленных пользовательские данные в Linked окна свойств сервера.
  • Добавление контекста безопасности по умолчанию «быть сделаны с помощью этого контекста безопасности»

Как я могу настроить его таким образом, пользователь SQL Server может использовать связанный сервер?

ответ

0

Проблема заключается в том, что идентификатор пользователя должен быть определен в строке удаленного соединения.

От https://blogs.technet.microsoft.com/mdegre/2011/03/10/access-to-the-remote-server-is-denied-because-no-login-mapping-exists/

Причина: При создании связанного сервера с @provstr параметров и вы используете локальный SQL Server, не являющийся администратор или не-Windows, учетную запись, вы должны добавить параметр «User Название»в @provstr

Разрешение: Добавить„Идентификатор пользователя = Имя пользователя“в строку провайдера на вашем связанного сервера

EXEC master.dbo.sp_addlinkedserver @server = N LinkServerName ' @ Provider = N'SQLNCLI', @ srvproduct = 'MS SQL Server', @ provstr = N'SERVER = ServerName \ InstanceName; User ID = MyUser»

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'LinkServerName ' @locallogin = NULL, @useself = N'False', @rmtuser = N'myUser», @rmtpassword = N '*****'

В общей сложности мои настройки строка выглядела так (с дополнительной информацией о настройке подключения через Интернет.

EXEC master.dbo.sp_addlinkedserver @server = N'LINKEDSERVERNAME', @srvproduct=N'SQL_SERVER', @provider=N'SQLNCLI', @provstr=N'SERVER=SERVER\INSTANCE;User ID=webuser', @datasrc=N'www.domain.com' 

Небольшое замечание, мой веб-сервер не имеет имя экземпляра, так что я оставил «\ INSTANCE» часть из строки подключения строить.

Примечание 2: В документации указано @ srvproduct = 'MS SQL Server', но мой сервер sql-сервера 2012 года вместо этого принимает SQL_SERVER.

Смежные вопросы