モデルケース1とは逆のモデルケースとして、ここではAccess上のテーブルのデータをSQL Server上のテーブルへと転送します。
Access上の「商品」テーブルを、ほぼ同じデータ構造のSQL Serverの「商品」テーブルに転送するパッケージを作成します。
- モデルケース1で作ったパッケージとは転送先と転送元が逆になるだけで、基本的なフローは同じです。わざわざ一から作るのは手間が掛かりますので、ここでは新しいパッケージを作るのではなく、モデルケース1で作ったパッケージをコピーしてから編集を加えることにします。
そこでまず、ソリューションエクスプローラ上で、コピー元となるパッケージ「Case01.dtsx」を右クリックして[コピー]を実行します。
- 次に、ソリューションエクスプローラの「SSIS パッケージ」というノードを右クリックして、[貼り付け]を実行します。
- 貼り付けられたパッケージのファイル名がこの場合「Case01 1.dtsx」となっていますので、「Case02.dtsx」にリネームします。
- 名前を変えると次のようなメッセージが表示されますので、[はい]をクリックします。
- ここから、コピーしたパッケージの内容を書き換えていきます。
まず、デザイナ上の「SQL実行タスク」のタスクをダブルクリックして「SQL実行タスクエディタ」ダイアログを開きます。
- 「SQL実行タスク」では、元のパッケージがAccessのテーブルを空にするようになっていますので、それをSQL Server上のテーブルを空にするように変更します(ここでは対象テーブルも変わります)。
まず「Connection」の欄の[▼]をクリックして、SQL Serverへの接続に設定変更します。
- 次に、「SQLStatement」の欄をSQL Serverの商品テーブルを空にするSQL文に書き換えます。ここでは「TRUNCATE TABLE
商品」とします。
- [OK]ボタンをクリックして「SQL実行タスク」の設定を確定します。
- 次に、「データフロータスク」の設定を変更します。
デザイナ上の「データフロータスク」をダブルクリックしてタブを「データフロー」に切り替えます。
- 「データフロー」のタブから「OLE DBソース」のコンポーネントをダブルクリックして「OLE DBソースエディタ」ダイアログを開きます。
- 「OLE DB接続マネージャ」がコピー元パッケージのSQL Serverの設定になっていますので、[▼]ボタンをクリックしてAccessへの接続に切り替えます。
- 転送元のテーブル名をAccess側のものから選択します。
- 画面左のリストから「列」を選択して、転送元テーブルのどのフィールドを転送先に出力するかを選択します。
- ここでは、モデルケース1と同様の理由で、「ID」と「添付ファイル」は除外しています。
- [OK]ボタンをクリックして「OLE DBソース」の設定を確定します。
- 次に、「OLE DB変換先」コンポーネントをダブルクリックします。
- するとここでは、すでにデザイナ上で「OLE DBソース」と「OLE DB変換先」のコンポーネントが結合されており、かつOLE DBソース側の変更によって両者の列の関係が狂ってしまっているため、下図のような警告の画面が表示されます。
ここでは表内の行がすべて選択された状態になっていますので、そのまま画面右下で「<無効な列参照を削除する>」を選択して[適用]ボタンをクリックします(表内で個別に設定することもできます)。
それによって表内の「使用できる列」が「<無効な列参照を削除する>」に変わったことを確認して、[OK]ボタンをクリックします。これによっていったんソースと変換先の列の関係がクリアされます。
- 画面が閉じるので、もう一度「OLE DB変換先」コンポーネントをダブルクリックして「OLE DB変換先エディタ」ダイアログを開きます。
- このダイアログにおいて、転送先となる接続先をSQL Serverに切り替え、またその対象テーブルをあらためて選択し直します。
- 「マッピング」を選択して、転送元と転送先のフィールドの関係を確認します。必要であれば結合線や表を操作して変更を行います。
- [OK]ボタンをクリックしてOLE DB接続先の設定を確定します。
- すべての設定変更が完了しましたので、デバッグ実行して、動作やテーブル内容の処理結果を確認します。
|