Возникли проблемы с добавлением связанного SQL server

Я пытаюсь получить данные с удаленного SQL Server. Я могу получить доступ к удаленному серверу с помощью проверки подлинности SQL; мне не удалось использовать те же учетные данные с sp_addlinkedserver.

Я пытаюсь что-то вроде этого:

Exec sp_dropserver 'Remote', 'droplogins'
go

EXEC sp_addlinkedserver   
   @server='Remote', 
   @srvproduct='',
   @provider='SQLNCLI', 
   @datasrc='0.0.0.0'

EXEC sp_addlinkedsrvlogin
    @useself='FALSE',
    @rmtsrvname='Remote',
    @rmtuser='User',
    @rmtpassword='Secret'

Select Top 10 * from Remote.DatabaseName.dbo.TableName

вот что я получаю:


OLE DB provider "SQLNCLI" for linked server "Remote" returned message 
"Login timeout expired".

OLE DB provider "SQLNCLI" for linked server "Remote" returned message 
"An error has occurred while establishing a connection to the server. 
When connecting to SQL Server 2005, this failure may be caused by the 
fact that under the default settings SQL Server does not allow remote 
connections.".

Msg 53, Level 16, State 1, Line 0
Named Pipes Provider: Could not open a connection to SQL Server [53]. 

опять же, я могу получить доступ к серверу напрямую (в SQL Management Studio), используя эти точные учетные данные, поэтому это не проблема с моей сетью или учетными данными.

большинство примеры, которые я видел в Интернете, похоже, включают учетные записи домена Windows, в отличие от имен входа в систему SQL. Это не работает с проверкой подлинности SQL?

6 ответов


Он работает с проверкой подлинности sql. На самом деле это проще, так как вам не нужно настраивать Kerberos при использовании проверки подлинности SQL.

одна вещь сбивает с толку о ваших сообщениях об ошибках, ваш адрес является IP-адрес: 123.45.678.90

ваше сообщение об ошибке говорит об именованных каналах. Может, это ключ к разгадке?

вам не нужно ссылаться на сервер в TSQL по его IP-адресу. Если вы добавите псевдоним на локальном сервере, указывая на удаленный сервер, вы можете дать более подходящее имя. Ссылка на него по IP-адресу явно неудовлетворительна.


чтобы решить проблему выше, я изменил определение связанного сервера, чтобы указать TCP конкретно:

EXEC sp_addlinkedserver   
    @server='TEST_LINK', 
    @srvproduct='',
    @provider='SQLNCLI', 
    @datasrc='tcp:0.0.0.0'

EXEC sp_addlinkedsrvlogin
    @useself='FALSE',
    @rmtsrvname='TEST_LINK',
    @rmtuser='user',
    @rmtpassword='secret'

это работает для меня. Этот метод также позволил мне указать нестандартный порт для удаленного сервера:

EXEC sp_addlinkedserver   
    @server='TEST_LINK', 
    @srvproduct='',
    @provider='SQLNCLI', 
    @datasrc='tcp:0.0.0.0,1111'

надеюсь, это поможет


понял это, благодаря строке инструкций в Мастере SMS GUI для добавления связанных серверов:"If SQL Server is selected, then the Linked Server name is also the network name of the server."

Я думал, что имя связанного сервера было просто произвольным псевдонимом.

это работает как шарм-жаль, что мне приходится вводить IP (в скобках) каждый раз, когда я хочу использовать этот связанный сервер, но там у вас есть это.

Exec sp_dropserver '0.0.0.0', 'droplogins'
go

EXEC sp_addlinkedserver   
    @server='0.0.0.0', 
    @srvproduct='',
    @provider='SQLNCLI', 
    @datasrc='0.0.0.0'

EXEC sp_addlinkedsrvlogin
    @useself='FALSE',
    @rmtsrvname='0.0.0.0',
    @rmtuser='user',
    @rmtpassword='secret'
go

Select Top 10 * from [0.0.0.0].DatabaseName.dbo.TableName

Если он не работает на именованных каналах при указании IP-адреса, попробуйте префикс IP-адреса с "tcp:" и посмотреть, помогает ли он установить его на правильный путь.


sp_configure 'специальные распределенные запросы', 1

далее

перенастроить с помощью override

проверили конфигурацию области поверхности SQL-->Databaseengine-->Remoteconnections-->Loacal и remoteconnections-->shouild используют как TCP / IP, так и именованные каналы (если не выбрать эту опцию и перезагрузить)

Это должно решить проблему Поставщик OLE DB "SQLNCLI" для связанного сервера" Remote " возвращает сообщение "Произошла ошибка при подключении к серверу. При подключении к SQL Server 2005 эта ошибка может быть вызвана факт, что в настройках по умолчанию SQL Server не разрешает удаленное подключение.".


иногда протоколы включены, и конфигурация поверхностной области позволяет удаленные подключения, но служба браузера SQL Server не была перезапущена с момента установки конфигурации. Это означает, что конфигурация не активна.

попробуйте перезапустить браузер SQL Server в качестве шага по устранению неполадок, если настройки все верны.

Майк