Использование распределенных запросов

Для того, чтобы сделать выборку из таблицы, расположенной на другом сервере или получить результат выполнения расположенной там функции или хранимой процедуры, в Microsoft SQL Server предусмотрен механизм распределенных запросов. Для использования этого механизма целевые сервера должны быть предварительно связаны.Настраивают связанный сервер с помощью SQL Server Management Studio или системной хранимой процедуры sp_addlinkedserver.

Для связывания на сервере запустите SQL Server Management Studio, раскройте узел Server Objects. В контекстном меню узла Linked Servers выберите пункт New Linked Server. На вкладке General нужно ввести имя связываемого сервера и выбрать тип сервера SQL Server. На вкладке Security. Выберите переключатель "Be made using the security context" и введите логин и пароль для доступа к удаленному серверу.

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

имя_связанного_сервера.база_данных.схема.имя_объекта

Вот пример запроса:

SELECT * FROM remote_server.remote_database.dbo.remote_table
Обращаясь подобных образом к объектам удаленной базы данных можно вызывать хранимые процедуры, например:

EXEC LinkedSRV.remote_database.dbo.remote_stored_procedure
Если при исполнении этой инструкции вы получите сообщение об ошибке "Server 'LinkedSRV' is not configured for RPC", вам потребуется настроить сервер для исполнения удаленных процедур. По умолчанию эта возможность отключена. Все настройки сервера вы можете просмотреть, исполнив следующий код T-SQL:

exec sp_helpserver
Если в полученной таблице для связанного сервера нет записи "rpc,rpc out", значит сервер не настроен для RPC.

Чтобы разрешить использование вызова удаленных процедур выполните следующий код:

exec sp_serveroption @server='LinkedSRV', @optname='rpc', @optvalue='true'
exec sp_serveroption @server='LinkedSRV', @optname='rpc out', @optvalue='true'
Прочли: 3501 | Добавлено: 20 апреля 2011 | На главную