Копирование данных через многопользовательские серверы SQL

Я пытаюсь выполнить работу на каждом сервере, используя следующую хранимую процедуру. Проблема в том, что когда я запускаю это задание на локальном сервере, он отлично работает, когда я запускаю одно и то же задание на удаленном сервере, я получаю сообщение об ошибке "Операция Merge", которая не может работать с удаленной базой данных. Мы запускаем SQL 2008 R2.

MERGE INTO dbo._demo_sp_exec_stats STAT
USING 
(SELECT d.object_id, d.database_id, 
 OBJECT_NAME(object_id, database_id) AS proc_name, 
 d.last_execution_time
 FROM sys.dm_exec_procedure_stats AS d
 WHERE d.database_id = DB_ID('_DemoDB') ) AS SRC
ON STAT.object_id = SRC.object_id
WHEN MATCHED 
 AND STAT.last_execution_time <> SRC.last_execution_time THEN
UPDATE SET
 last_execution_time = SRC.last_execution_time
WHEN NOT MATCHED THEN
INSERT (object_id,
 database_id,
 proc_name,
 last_execution_time)
VALUES (SRC.object_id, SRC.database_id, 
 SRC.proc_name, SRC.last_execution_time) ;
1 ответ

Если вы переписываете свой код так, чтобы вы вытаскивали информацию с удаленного сервера и вставляли ее на локальный сервер, вы сможете обойти пределы оператора слияния. Измените значение, чтобы включить полное имя связанного сервера. Таким образом, вместо запуска оператора на каждом сервере он запускает задание на центральном сервере и извлекает данные с удаленных серверов и вставляет данные локально.

licensed under cc by-sa 3.0 with attribution.