1

同一のスキーマを持つ 2 つのデータベースに 2 つのテーブルがあります。2 つのデータベースは、別の場所にある別のサーバー上にあります。これで、2 つのデータベース テーブルのいずれかにデータを挿入および更新できるようになりました。要件は、異なるデータベース内の 2 つのテーブルを同期して、常に更新された情報を保持することです。

主キー列は、どちらのデータベース テーブルでも常に一意になります。

SSIS経由でこれを達成する方法は?

よろしくお願いします。

4

1 に答える 1

0

2 で達成できますScript Tasks。最初のもので:

-- what exists in A and not in B
SELECT * INTO DB1.temp.TBL_A_except FROM
(
   SELECT pk FROM DB1.schema1.TBL_A
     EXCEPT
   SELECT pk FROM DB2.schema2.TBL_B
);
-- what exists in B and not in A
SELECT * INTO DB2.temp.TBL_B_except FROM
(
   SELECT pk FROM DB2.schema2.TBL_B
     EXCEPT
   SELECT pk FROM DB1.schema1.TBL_A
);

二つ目:

INSERT INTO DB2.schema2.TBL_B
SELECT * FROM DB1.temp.TBL_A_except;

INSERT INTO DB1.schema1.TBL_A
SELECT * FROM DB2.schema2.TBL_B_except;

DROP TABLE DB1.temp.TBL_A_except;
DROP TABLE DB2.schema2.TBL_B;

SSIS 変換手法でこれを本当に実現したい場合はCache Connection Manager、一時テーブル 1 と 2 として 2x の 2 つのデータ フローを使用します。1 つ目はデータをキャッシュに保存し、2 つ目はキャッシュからテーブルにロードします。

また

2 つのデータ フロー。Source-> Lookup-> Destination. ルックアップを実装して、2 番目のテーブルで PK の存在を確認します。レコード Tbl_A の場合、Tbl_B にそのような PK がない場合は、この行を Tbl_B に挿入する必要があることを意味します。No Match Output、行を目的地に誘導します。

于 2013-09-24T06:45:42.037 に答える