В 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
Внимание: Запросы будут бегать между серверами, если логин и пароль пользователя одинаковы на этих серверах.
Leave a Reply