こんにちは。
SQL Server Integration Services (以下 SSIS) でのログ出力方法についてご案内します。
今回は、3 つの方法をご紹介します。
1. パッケージ開発ツールでのログ出力設定
2. dtexec パラメーター指定でのログ出力
3. SSISDB データベース内のログを参照する ※SQL Server 2012 以降のバージョンでのみ利用可能
*** SSISDB について補足 ***
SQL Server 2012 より新機能としてプロジェクト配置モデルという実行形態が導入され、配置先に SSISDB が利用できるようになりました。
これに伴い、パッケージ開発ツールも一新されています。SQL Server 2012 以降は従来の SSIS パッケージの開発/実行形態をレガシ SSIS と呼び区別しています。
レガシ SSIS 機能 | SSISDB の利用 | 開発ツール | |
SQL Server 2005 | 〇 | X | SQL Server Business Intelligence Studio |
SQL Server 2008 | 〇 | X | SQL Server Business Intelligence Studio |
SQL Server 2008 R2 | 〇 | X | SQL Server Business Intelligence Studio |
SQL Server 2012 | 〇 | 〇 | SQL Server Data Tools |
SQL Server 2014 | 〇 | 〇 | SQL Server Data Tools |
ではさっそく見ていきましょう!
1. パッケージ開発ツールでのログ出力設定
1) SQL Server Business Intelligence Studio、もしくは SQL Server Data Tools を [管理者として実行] から起動し、プロジェクトを開きます。
※ どちらの開発ツールも Visual Studio ベースであり、以降のログ採取手順は同じです。
2) [SSIS] メニュー - [ログ記録] を選択します。 --> SSIS ログの構成 画面が開きます。
3) 左部ペインの コンテナーに チェックを入れます。パッケージ全体の実行をログするように設定します。
4) [プロバイダーとログ] タブから下記を選択し、追加 ボタンをクリックします。
- プロバイダーの種類: テキストファイルの SSIS ログ プロバイダー --> [テキストファイルの SSIS ログ プロバイダー] が生成されます。
5) [テキストファイルの SSIS ログ プロバイダー] にチェックを入れます。
6) 構成 の列から、新しい接続を選択します。 --> ファイル接続マネージャー エディター 画面が表示されます。
7) ファイル接続マネージャー エディター 画面にて、下記の設定を行い、設定を保存します。
- 使用法の種類: ファイルの作成
- ファイル: 参照ボタンより任意のパス、ファイル名(例:log.txt など)を指定します。
8) [詳細] タブを選択します。イベントの左のチェックを有効にし、すべてのイベントをログするように設定後、[OK] をクリックし、設定を保存します。
上記設定を経て、パッケージを実行頂きますと、手順 7) で指定頂いたパスにログ情報が出力されます。
この例ではテキストファイルにログを出力していますが、他の形式としてSQL Server やイベントログに記録することも可能です。
詳細は、下記を参考にしてください。
Integration Services (SSIS) のログ記録
2. dtexec パラメーター指定でのログ出力
dtexec により、コマンドプロンプトからSSISパッケージを実行することが可能ですが、実行時のパラメーター指定によってログ出力の指定が可能です。
パッケージの再ビルドはできないけれど、ログ出力だけ操作したい時など便利ですね。
代表的なパラメーターとして、/VLog と /Rep をご紹介します。
/VLog
例) dtxec /F package.dtsx /VLog c:\work\test.log
/VLog の後に指定したパス (この場合 c:\work\test.log) のテキストファイルにログが出力されます。
SQL Server 2005 SP3以降から利用可能なパラメーターです。
/Rep
例) dtxec /F package.dtsx /Rep EW
出力するログレベルを変更する場合は /Rep パラメータを使用します。既定のレベルは、E (エラー)、W (警告)、P (進行状況) です。
/Rep EW とすれば、進行状況は除外してエラーや警告のみに絞ったログ出力が可能です。
/Rep V とすれば、詳細モードにてログを出力します。(V は他の引数と同時に指定できないので、単独で指定してください。)
※なお、コンソールの出力内容をコマンドプロンプトのリダイレクト (>, >>) を使用することで、ファイル出力可能です。
各パラメーターの詳細については、下記技術情報を参考にしてください。
dtexec ユーティリティ
3. SSISDB データベース内のログを参照する
SQL Server 2012からは新たにプロジェクト配置モデルがサポートされましたが、SSIS サーバーに配置されたパッケージを実行する際にもログ記録について設定が可能です。
1) SQL Server Management Studio のオブジェクト エクスプローラーで、パッケージに移動します。
[統合サービス カタログ] - [SSISDB] - [フォルダ名] とノード展開してください。
2) パッケージを右クリックし、[実行] をクリックします。
3) [パッケージの実行] ダイアログ ボックスで、[詳細設定] タブをクリックします。
5) 他のパッケージの構成を完了し、[OK] をクリックしてパッケージを実行します。
2015/3/2 追記:
上記パッケージ実行ダイアログからのログ記録レベルの設定は、そのパッケージ1回の実行時のみ有効な設定となり、次回パッケージ実行時には、サーバー既定のログ記録レベルに戻されます。
サーバー既定のログ記録レベルは、下記 SSISDB カタログのプロパティ画面より設定します。
ログの参照方法
上記ログは、SSISDBカタログの内部テーブルに保存されています。クエリやビューで参照可能ですが、SQL Server Management Studioからレポートとしてグラフィカルに表示させることが可能です。
SQL Server Management Studioにて [統合サービス カタログ] - [SSISDB] - [フォルダ名] とノード展開し、[パッケージ名] で右クリック、[レポート] - [標準レポート] - [すべての実行] をクリックします。
下記のようなレポート一覧が表示されます。プロジェクト実行毎に 1 行表示されています。さらに詳細を確認するにはレポート内の各リンクをクリックしてください。
表示される具体的な内容は、下記を参考にしてください。
Integration Services サーバーのレポート
ログの提供方法
サポートサービスをご利用いただく際など、SSISDBカタログ内に採取されたログのご提供が必要なケースがあります。
この場合、SSISDB データベースのバックアップを採取ください。
- 手順
1) SQL Server Management Studio から、該当のインスタンスに接続します。
2) 該当のデータベース (SSISDB) を右クリック [タスク] - [バックアップ] をクリックします。
3) 画面下部の [バックアップ先] に表示されているフォルダパスを控えます。
4) 画面で表示されている状態のまま[OK]をクリックします。3) のフォルダ配下にバックアップファイルが格納されますので格納されたバックアップファイル (SSISDB.bak) を送付下さい。
以上です。