Кросс-запросы между базами данных и серверами в MsSQL

В MsSQL есть прекрасная возможность выполнять кросс-запросы между серверами.

Пример SQL, работающего между серверами:

SELECT DOC_ID, DOC_NO, FIRM_ID, STRQTY 
FROM [192.168.99.68].[WMS_FS].[dbo].[DOC_TITLES_FRM] T
where
			(SYNC_STATE_ID=0) 
            and	(DOC_TYPE_ID=75305) 
            and	(DOC_DATE>=DATEADD(month,-1,GETDATE())) 
            and
			convert(nvarchar(12),DOC_ID) NOT IN 
              (Select DOC_CODE 
              from [dbo].[_get_1C_DOC_ORDERS](DATEADD(month,-1,GETDATE()),GETDATE())
              ) 

			ORDER by FIRM_ID

Для того, чтоб заработала связь между серверами, необходимо разрешить обращение к другому серверу на сервере-источнике.

Вот как это делается:

EXEC sp_addlinkedserver
@server = N’192.168.99.68′,
@srvproduct = N”,
@provider = N’SQLNCLI’,
@datasrc = N’192.168.99.68′;
GO

Если нужно удалить связь:

EXEC sp_dropserver @server = N’192.168.99.68′
GO

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

 

Be the first to comment

Leave a Reply

Your email address will not be published.


*