TimberLandChapelのTech Blog

TimberLandChapel が提供する技術Tips,思いつきメモ,雑感ブログです。
Office 互換リボン Release 1.0 をリリースしました。

購読

今期のアンケート

INETAJ

Microsoft

SQL Server

TLC.com

クリエイティブ・コモンズ

情報処理関係官公庁

【SSIS Lightning】ODBC 接続を利用してデータフロータスクにデータをパイプする
シナリオと要件

SSIS で利用するメインの接続は,[OLE DB 接続] です。
しかし,まだまだ今まで使い慣れた,または動かせない環境として作りこんでしまった,[ODBC],[DSN] ベースの接続を生かしたいという要件がやはりあるようです。

もちろん,SSIS パッケージ化を機に [OLE DB 接続] に切り替えることをお勧めしますが,
現実に必要な [ODBC 接続] に対応しないわけにもいきません。

ここでは,[ODBC] を利用して [データフロー] 内にデータをパイプする方法を解説します。

この記事は,
SQL Server 2005 Developer Edition Service Pack 1
Integration Services に基づいて記述しています。

[ODBC 接続の接続マネージャ] を試してみる

今回は,[データフロー] 内に [ODBC] からデータをパイプすることが目標なので,単一の [データフロータスク] を作成してこれに [ODBC] からデータを流し込みます。

[制御フロー] ペインで [データフロータスク] を1つ作成する。

[接続マネージャ] ペインで右クリックして,[新しい接続] をクリックする。

[SSIS 接続マネージャの追加] ウィンドウで [ODBC] を選択して [追加] をクリックする。

[ODBC 接続マネージャの構成] ウィンドウで使用したい [ODBC] を構成する。

ここまでで,[ODBC 接続] は正しく作成できました。
さて,ではこの接続をどのデータソースに接続してデータを取得するのでしょうか?
実は,[OLE DB ソース]はもちろんのこと,[Excel ソース] なども,前提とするのは [OLE DB 接続] であって,[ODBC 接続] はそもそも設定できません

唯一使用できそうな [DataRader ソース] の接続に設定しても
「ランタイム接続マネージャから,マネージ接続を取得できません」というエラーが表示されて実際には使用できないのです。

[ADO.NET 接続] を使用する

素直に [ODBC 接続] を構成しても,[データフロー] には対応するデータソースがありません。
では,どうすれば [ODBC] を利用してデータをパイプできるのでしょうか?

[ADO.NET 接続] を [ODBC] を用いて構成するというのが一番素直にできる構成のようです。

[接続マネージャ] ペインで右クリックして,[新しい ADO.NET 接続] をクリックする。

[ADO.NET の接続マネージャの構成] ウィンドウで [新規作成] をクリックする。

[接続マネージャ] ウィンドウで [プロバイダ] を [.NET プロバイダ\Odbc Data Provider] に設定し,必要な設定を行う。

[Data Reader ソース] を1つ作成して,プロパティを開く。

[接続マネージャ] タブで,[接続マネージャ] に今作成した [ADO.NET 接続] を設定する。

後は,[コンポーネントのプロパティ] タブで [SqlCommand] などを設定することで,ソースを構成できるようになります。

以上の手順で,[ADO.NET 接続] と [Data Reader ソース] を用いて [ODBC] からデータをパイプすることができます。
ポイントは,[ODBC 接続] という接続マネージャに惑わされないことですね。


  ヒント 
[ODBC 接続] はなぜ存在するのかについて
データソースに接続できないのに,[ODBC 接続] はなぜ存在するのでしょうか?
将来のソースの増強に対応しているのでしょうか?

もちろんその可能性もありますが,答えは [制御フロータスク] にあります。
[SQL 実行タスク] の [ConnectionType] を [ODBC] に設定してあげることによって,[ODBC 接続] を有効な接続として設定できるようになります。

このタスクを利用すれば,[ODBC 接続] を使用した [SQL 実行タスク] の結果セットを [データフロー] にパイプするということもできるんですね。

written by TimberLandChapel

Published 2006年6月22日 0:37 投稿者 timberlandchapel

コメント

# 【SSIS Lightning】ODBC 接続を利用してデータフロータスクにデータをパイプする@ 2006年6月22日 0:43

SSIS のメインステージは [OLE DB] ですが,
まだまだ [ODBC] を使用しなければいけないというシナリオはあると思います。
困ったことに,素直に [ODBC 接続] をデータフローにパイプすることができないため,まとめました。...