Подключение к удаленному серверу в T-SQL (SQL Server 2008) - PullRequest
7 голосов
/ 29 апреля 2009

У кого-нибудь есть пример хранимой процедуры, которая устанавливает соединение с удаленным сервером?

Я искал в Интернете и на данный момент обнаружил, что это можно сделать с помощью sp_addlinkedserver и sp_addlinkedsrvlogin, но я не нашел хорошего примера и не очень хорошо понимаю документацию. *

UPDATE:

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

EXEC sp_addlinkedserver 
    @server = 'SiminnSrv', 
    @provider = 'SQLNCLI',
    @catalog = 'devel',
    @srvproduct = '',
    @provstr = 'DRIVER={SQL Server};SERVER=my.serveradr.com;UID=my_user_name;PWD=my_pass_word;'

Это действительно заставляет меня соединиться, но когда я запрашиваю таблицу, я получаю это сообщение:

Ошибка входа пользователя '(null)'. Причина: не связан с надежным соединением SQL Server>.

Ответы [ 4 ]

10 голосов
/ 29 апреля 2009

По сути вы создаете связанный сервер с другим сервером, а затем предоставляете учетные данные для входа в систему, которые будут использоваться для вызовов SQL на этот связанный сервер. например это подключится к «MyOtherServer» с использованием DomainAccount для этого сервера с именем пользователя и паролем «DomainUserName», «DomainPassword»

EXEC sp_addlinkedserver 'MyOtherServer', N'SQL Server'


EXEC sp_addlinkedsrvlogin 
   'MyOtherServer', 
   'false', 
   'OtherServerDomain\DomainUser', 
   'DomainUserName', 
   'DomainPassword'

Подробнее Здесь И Здесь

2 голосов
/ 20 октября 2015

Мне удалось подключиться к MSSQL Server 2008 через связанный сервер, используя «SQL Server Native Client 10» (SQLNCLI10), но мне пришлось использовать sp_addlinkedsrvlogin вместо @provstr для предоставления сведений о соединении. Это основано на примере из этой статьи :

EXEC master.dbo.sp_addlinkedserver 
    @server = 'MyServerConnection',
    @srvproduct = '', 
    @datasrc = 'SERVERNAME\INSTANCENAME',
    @provider = 'SQLNCLI10', 
    @provstr = ''

EXEC sp_addlinkedsrvlogin
    @rmtsrvname = 'MyServerConnection',
    @useself = 'false',
    --@locallogin = 'someLocalUser' -- Use to restrict the connection to specific login
    @rmtuser = 'remoteUser',
    @rmtpassword = 'secret'

Запрос этого связанного сервера:

SELECT *
FROM [MyServerConnection].[SomeDatabase].[dbo].[TableName]
0 голосов
/ 04 февраля 2016

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

Для выполнения начальной ссылки я использовал

EXEC sp_addlinkedserver @server='serverLinkPseudonym',@srvproduct='',@provider='SQLOLEDB', @datasrc='192.168.1.1';

Затем, когда я входил в систему с аутентификацией Windows, я добавил пользователя Windows (это вылечило мою ошибку «Не связано с доверенным SQL Server»)

EXEC sp_addlinkedsrvlogin 'serverLinkPseudonym', 'false', 'MACHINENAME\windowsLogin', 'lnkSrvLogin', 'lnkSrvPswd';  

Я также обнаружил, что если я собирался запускать задания агента SQL Server, которые делали вызовы на LinkedServer, мне пришлось добавить следующее:

EXEC sp_addlinkedsrvlogin 'serverLinkPseudonym', 'false', 'NT AUTHORITY\SYSTEM', 'lnkSrvLogin', 'lnkSrvPswd';     

Ради ясности: «192.168.1.1» - это IP-адрес сервера, с которым необходимо установить связь. «lnkSrvLogin» - это логин на сервере, с которым нужно связать, который имеет доступ к базам данных, к которым вам нужно получить доступ. «lnkSrvPswd» - пароль этой учетной записи.

Если вы подключаетесь к связанному серверу, используя учетную запись с существующего сервера, то вы просто используете это имя учетной записи в команде sp_addlinkedsrvlogin. например:

EXEC sp_addlinkedsrvlogin 'serverLinkPseudonym', 'false', 'thisServerLogin', 'lnkSrvLogin', 'lnkSrvPswd';  

Затем проверьте это:

SELECT * FROM [serverLinkPseudonym].[DBName].[dbo].[TableName]
0 голосов
/ 29 апреля 2009

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

Эта страница содержит довольно подробное объяснение того, как работает sp. http://doc.ddart.net/mssql/sql70/sp_adda_17.htm

если вы хотите установить связь с другим сервером sql, просто выполните это:

sp_addlinkedserver @server='ServerName', @srvproduct='SQL Server'

@ server - это имя сервера, который вы хотите добавить. @srcproduct - это тип сервера. Возможно, вам придется сделать еще несколько вещей, чтобы подключить 2008 к 2005 году, но 2008 год должен работать следующим образом.

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