おそらく、あなたは今までにあなたの質問に対する答えを見つけているでしょう。この回答は、この質問に出くわす可能性のある他の人を助けるためのものです。 SSIS を使用してデータ転送を解決するために使用できるオプションを次に示します。サーバー A とサーバー B の両方を指す接続文字列を SSIS パッケージから作成できると仮定しました。その仮定が間違っている場合は、この回答を削除できるようにお知らせください。この例では、SQL Server 2008 R2
を使用しています。 バックエンドとして。私は 2 つのサーバーを持っていないので、異なる Schemas
に 2 つの同一のテーブルを作成しました。 サーバーA と ServerB .
段階的なプロセス:
<オール> <リ>
Connection manager
SSIS のセクションで、ServerA という 2 つの OLE DB 接続を作成します。 と ServerB .この例は同じサーバーを指していますが、シナリオでは、接続は 2 つの異なるサーバーを指す必要があります。スクリーンショット #1 を参照 .
2 つのスキーマ ServerA
を作成します および ServerB
.テーブル dbo.ItemInfo
を作成します 両方のスキーマで。これらのテーブルの作成スクリプトは、スクリプト の下にあります。 セクション。繰り返しますが、これらのオブジェクトはこの例のためだけのものです.
両方のテーブルにいくつかのサンプル データを入力しました。テーブル ServerA.ItemInfo
2,222 rows
を含む およびテーブル ServerB.ItemInfo
10,000 rows
を含む .質問によると、不足している 7,778 行は ServerB
から転送する必要があります ServerA
へ .スクリーンショット #2 を参照 .
SSIS パッケージの [制御フロー] タブで、スクリーンショット #3 に示すようにデータ フロー タスクを配置します。 .
<リ>
データ フロー タスクをダブルクリックして [データ フロー] タブに移動し、以下の説明に従ってデータ フロー タスクを構成します。 サーバー B OLE DB Source
です; サーバー A でレコードを検索 Lookup transformation task
です と サーバー A OLE DB Destination
です .
OLE DB Source
の構成 サーバー B スクリーンショット #4 に示すように そして #5 .
Lookup transformation task
の構成 サーバー A でレコードを検索 スクリーンショット #6 に示すように - #8 .この例では、ItemId が一意のキーです。したがって、これは 2 つのテーブル間で欠落しているレコードを検索するために使用される列です。 Server A に存在しない行のみが必要なので 、オプション Redirect rows to no match output
を選択する必要があります .
OLE DB Destination
を配置します データ フロー タスクについて。 Lookup 変換タスクを OLE DB Destination に接続すると、Input Output Selection
のプロンプトが表示されます。 ダイアログ。 Lookup No Match Output
を選択します スクリーンショット #9 に示すダイアログから . OLE DB Destination
を構成する サーバー A スクリーンショット #10 に示すように そして #11 .
データ フロー タスクが構成されると、スクリーンショット #12 のようになります。 .
<リ>
パッケージの実行例をスクリーンショット #13 に示します。 .お気づきのように、欠落している 7,778 rows
Server B
から転送されました Server A
へ .スクリーンショット #14 を参照 パッケージの実行後にテーブル レコード数を表示します。
要件は欠落しているレコードを挿入することだけだったので、このアプローチが使用されました。既存のレコードを更新し、有効でなくなったレコードを削除する場合は、この リンク。タブ区切りファイルを読み込むための SQL Integration Services? リンクの例は、フラット ファイルを SQL に転送する方法を示していますが、既存のレコードを更新し、無効なレコードを削除します。また、例は多数の行を処理するように微調整されています。
お役に立てば幸いです。
スクリプト
.
CREATE SCHEMA [ServerA] AUTHORIZATION [dbo]
GO
CREATE SCHEMA [ServerB] AUTHORIZATION [dbo]
GO
CREATE TABLE [ServerA].[ItemInfo](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ItemId] [varchar](255) NOT NULL,
[ItemName] [varchar](255) NOT NULL,
[ItemType] [varchar](255) NOT NULL,
CONSTRAINT [PK_ItemInfo] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [UK_ItemInfo_ItemId] UNIQUE NONCLUSTERED ([ItemId] ASC)
) ON [PRIMARY]
GO
CREATE TABLE [ServerB].[ItemInfo](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ItemId] [varchar](255) NOT NULL,
[ItemName] [varchar](255) NOT NULL,
[ItemType] [varchar](255) NOT NULL,
CONSTRAINT [PK_ItemInfo] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [UK_ItemInfo_ItemId] UNIQUE NONCLUSTERED ([ItemId] ASC)
) ON [PRIMARY]
GO
スクリーンショット #1:
スクリーンショット #2:
スクリーンショット #3:
スクリーンショット #4:
スクリーンショット #5:
スクリーンショット #6:
スクリーンショット #7:
スクリーンショット #8:
スクリーンショット #9:
スクリーンショット #10:
スクリーンショット #11:
スクリーンショット #12:
スクリーンショット #13:
スクリーンショット #14: