クライアントサーバー間で差分コピーを実行するためのPROCEDURE
以下のようなリンクサーバーを定義する
EXEC sp_addlinkedserver 'サーバー名', N'SQL Server'
EXEC sp_addlinkedsrvlogin 'サーバー名', 'false', NULL, 'User', 'Password'
サーバー名はIPも可能
以下のような PROCEDURE をクライアントサーバー間で差分コピーを実行するマスタ分だけ用意する。
例ではキー項目は[店舗コード],顧客番号である。
削除は行わないものとし、追加更新時には保存日時を更新しているものとする。
CREATE PROCEDURE SEND顧客マスタ
@前回保存日時 datetime
AS
UPDATE サーバー名.DB名.dbo.顧客マスタ
SET
[店舗コード] = T1.[店舗コード],
顧客番号 = T1.顧客番号,
・・・(全項目),
保存日時 = T1.保存日時
FROM サーバー名.DB名.dbo.顧客マスタ, dbo.顧客マスタ T1
WHERE
[店舗コード] = T1.[店舗コード] AND
顧客番号 = T1.顧客番号 AND
T1.保存日時 > @前回保存日時
INSERT INTO サーバー名.DB名.dbo.顧客マスタ(
[店舗コード], 顧客番号, ・・・(全項目),保存日時
)
SELECT
T1.[店舗コード], T1.顧客番号, ・・・(全項目),T1.保存日時
FROM dbo.T顧客マスタ T1
WHERE
NOT EXISTS (
SELECT *
FROM サーバー名.DB名.dbo.顧客マスタ T2
WHERE
T1.[店舗コード] = T2.[店舗コード] AND
T1.顧客番号 = T2.顧客番号
)