えムナウのプログラミングのページ

えムナウ の とどけもの

 Logo えムナウBlog@AILight
えムナウBlog@Wankuma

目次

利用状況

イメージ ギャラリー

カテゴリ

Links
 

inetaj

MSMVPロゴ
MSMVP Visual C# 2005/01-2007/12

目次

クライアントサーバー

サンプル1 差分コピーPROCEDURE


クライアントサーバー間で差分コピーを実行するための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.顧客番号
 )