TimberLandChapel's Tech Blog

TimberLandChapel provide Tips, tech note and scribbling.
Updated my site as English site for APAC users.
TLC.com .Metrix 4.0 Beta1 released

サイトの日本語化方法はこちら

Syndication

News

INETAJ

情報処理関係官公庁

SQL Server

TLC.com

Microsoft

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

http://www3.clustrmaps.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 by timberlandchapel

Comments

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

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