SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SSIS のパッケージ構成を使用して接続マネージャーの情報を外部ファイルに設定

leave a comment

ol0ooSSIS のパッケージ構成 (dtsconfig) を使用することで、設定を外部ファイル上に設定することが可能となります。
今回の投稿では、パッケージ構成を使用して、接続マネージャーの情報を外部のファイルに設定する方法をまとめてみたいと思います。

■接続マネージャーの情報をパッケージ構成で設定


今回はパッケージ構成を使用するために SSDT の SSIS のプロジェクトでは [パッケージ配置モデル] を使用しています。

以下のようなシンプルなデータフローを作成しています。
image

OLE DB ソース で SQL Server に接続して、フラット ファイル変換先のテキストファイルにテーブルの内容を出力するという流れになっています。

この時に以下の情報が接続マネージャーで設定されています。

OLEDB 接続マネージャー 接続先の接続文字列
フラットファイル 接続マネージャー ファイルの出力先
ファイル名

 

ファイル名は環境固有になるということはないかも知れませんが、接続先やファイルの出力先の情報は開発環境と本番環境で異なることがあると思います。

このような環境を使用している場合、接続先の変更方法としては、

  • BIDS / SSDT から環境に合わせて接続マネージャーの内容を設定
  • .dtsx ファイルをテキストエディタで開いて内容を変更
    # dtsx は xml 形式のファイルですのでエディタで変更できます。

というような対応をすることができますが、手修正ですので修正漏れや記述ミスがあるかと思います。

このような環境に依存する設定に関してはパッケージ構成で外部ファイルに出力しておくとよいかと思います。

BIDS か、SSDT でパッケージ構成モデルのプロジェクトを作成している場合は、メニューバーの [SSIS] から [パッケージ構成] からパッケージ構成ファイルを作成することができます。

ファイルの作成はウィザードに従うだけですので割愛しますが、パッケージ構成ウィザードでは、以下の画像のように接続マネージャーの設定をパッケージ構成で設定することができるようになります。
# パッケージ構成ウィザードではどの設定を外部ファイルに含めるかという指定のみとなり (ReadOnly で変更できない) 、実際の変更はテキストエディタで dtsconfig を開いて修正する必要がありそうですが。
image

OLEDB 接続の場合は、Initial Catalog や ServerName の情報などをパッケージ構成に出力しておくとよいかと思います。
設定をすると dtsconfig ファイルに以下のように設定が出力されます。
image

フラットファイル接続マネージャーの情報も同じような方法で、ConnectionString をパッケージ構成で設定することで設定を外部ファイルに書き出すことができますが、複数のファイルが存在する場合は異なるアプローチをしたほうが良いかと思います。
ConnectionString にはファイルのフルパスを記述をする必要があるため、複数のファイルがある場合は各ファイル単位でパスを変更する必要が出てきます。
ファイルの出力先は一つである (統一されている) ことが多いかと思いますので、できれば一か所の変更だけで対応できると楽ですよね。

そのような場合は変数と組み合わせて設定するとよさそうです。
まずは、パッケージ内の変数としてパスを格納するための変数を作成しておきます。
image

次に、この変数を使用してファイルの出力先を変更できるように設定をします。
設定はフラットファイル接続マネージャーのプロパティで Expressions を設定することで実施します。
image

式としては以下のような内容を設定します。
ConnectionString を変数名を使用したものに書き換えるという単純な式です。
image

 

最後にパッケージ構成でこの変数の内容を外部に出すように設定します。
image

これで設定は完了です。
パッケージ構成に設定した内容は .dtsconfig に出力されていますので、以降の設定変更は .dtsx ではなくこの構成ファイルを変更することで対応できるようになります。

設定の切り替えは、環境によって複数の構成ファイルを用意しておいて、BIDS/SSDT のメニューの [SSIS] → [パッケージ構成] からパッケージ構成オーガナイザーを使用して、使用するパッケージ構成ファイルを変更する、
image

[C:Program FilesMicrosoft SQL Server110DTSBinn] (SQL Server 2012 の場合のパス) の [dtexec.exe] の [/config] オプションから使用する構成ファイルを指定するというがあるかと思います。

.dtsx をテキストエディタで開いて、.dtsconfg のファイルパス (DTS:ConfigurationString) を直接変更するという方法もありますね。

メンテナンス性を考慮したパッケージの作成って大事ですね~。

Written by masayuki.ozawa

10月 6th, 2012 at 11:50 am

Posted in SQL Server

Tagged with

Leave a Reply

*