Integration Services (SSIS) のログ記録

適用対象:SQL Server Azure Data Factory の SSIS Integration Runtime

SQL Server Integration Services には、パッケージ、コンテナー、およびタスクにログ記録を実装するために使用できる、ログ プロバイダーが含まれています。 ログ記録を行うと、パッケージに関する実行時の情報をキャプチャできるので、パッケージを実行するたびに監査やトラブルシューティングに役立ちます。 たとえば、パッケージを実行した演算子の名前と、パッケージの開始および完了時刻をログにキャプチャできます。

Integration Services サーバーでのパッケージ実行中に発生するログ記録のスコープを構成できます。 詳細については、「 SSIS サーバーでのパッケージ実行のログ記録を有効にする」を参照してください。

dtexec コマンド プロンプト ユーティリティを使用してパッケージを実行する際にも、ログ記録を使用できます。 ログ記録をサポートするコマンド プロンプトの引数の詳細については、「 dtexec Utility」を参照してください。

SQL Server Data Tools でのログ記録の構成

ログはパッケージに関連付けられ、パッケージ レベルで設定します。 パッケージ内の各タスクやコンテナーによって、パッケージのログに情報を書き込むこともできます。 パッケージのログ機能が有効にされていない場合でも、そのパッケージに含まれるタスクやコンテナーのログ機能を有効にできます。 たとえば、親パッケージのログ機能を有効にしなくても、SQL 実行タスクのログ機能を有効にできます。 パッケージ、コンテナー、およびタスクは、複数のログに対して書き込みが可能です。 パッケージにのみログ機能を有効にできます。または、そのパッケージに含まれる任意の個別のタスクまたはコンテナーを選択して、ログ機能を有効にできます。

パッケージにログを追加するには、ログ プロバイダーとログの場所を選択します。 ログ プロバイダーは、ログ データの形式を指定します。たとえば、 SQL Server データベースやテキスト ファイルなどを指定できます。

Integration Services には、次のログ プロバイダーが含まれています。

  • テキスト ファイルのログ プロバイダー。ログ エントリを、コンマ区切り (CSV) 形式で、ASCII テキスト ファイルに書き込みます。 このプロバイダーで使用されるファイル名の既定の拡張子は、.log です。

  • SQL Server プロファイラー のログ プロバイダー。 SQL Server Profiler を使用して表示できるトレースを書き込みます。 このプロバイダーで使用されるファイル名の既定の拡張子は、.trc です。

    注意

    64 ビット モードで実行されているパッケージでは、 SQL Server プロファイラー のログ プロバイダーを使用できません。

  • SQL Server のログ プロバイダー。ログ エントリを、 データベースの sysssislog SQL Server テーブルに書き込みます。 master や msdb などのシステム データベースにログを記録すると、パフォーマンスが低下する可能性があります。 Integration Services ログ用に別のデータベースを作成することをお勧めします。

  • Windows イベント ログのログ プロバイダー。エントリを、ローカル コンピューター上にある Windows イベント ログのアプリケーション ログに書き込みます。

  • XML ファイルのログ プロバイダー。ログ ファイルを XML ファイルに書き込みます。 このプロバイダーで使用されるファイル名の既定の拡張子は、.xml です。

ログ プロバイダーをパッケージに追加したり、ログ記録をプログラムによって構成する場合、 SSIS デザイナーの [SSIS ログの構成] ダイアログ ボックスに表示される名前を使用せず、ProgID または ClassID のどちらかを使用してログ プロバイダーを識別できます。

次の表に、 Integration Services に含まれるログ プロバイダーの ProgID と ClassID、およびログ プロバイダーが書き込むログの場所の一覧を示します。

ログ プロバイダー ProgID ClassID Location
テキスト ファイル DTS.LogProviderTextFile {0A039101-ACC1-4E06-943F-279948323883} ログ プロバイダーが使用するファイル接続マネージャーでテキスト ファイルのパスを指定します。
SQL Server プロファイラー DTS.LogProviderSQLProfiler {E93F6300-AE0C-4916-A7BF-A8D0CE12C77A} ログ プロバイダーが使用するファイル接続マネージャーで SQL Server プロファイラーが使用するファイルのパスを指定します。
SQL Server DTS.LogProviderSQLServer {94150B25-6AEB-4C0D-996D-D37D1C4FDEDA} ログ プロバイダーが使用する OLE DB 接続マネージャーで、ログ エントリ用の sysssislog テーブルを格納する SQL Server データベースを指定します。
Windows イベント ログ DTS.LogProviderEventLog {071CC8EB-C343-4CFF-8D58-564B92FCA3CF} Windows イベント ビューアーのアプリケーション ログには、 Integration Services のログ情報が表示されます。
XML ファイル DTS.LogProviderXMLFile {440945A4-2A22-4F19-B577-EAF5FDDC5F7A} ログ プロバイダーが使用するファイル接続マネージャーで XML ファイルのパスを指定します。

また、カスタム ログ プロバイダーを作成することもできます。 詳細については、「 Creating a Custom Log Provider」を参照してください。

パッケージ内のログ プロバイダーは、パッケージのログ プロバイダー コレクションのメンバーです。 SSIS デザイナーを使用してパッケージを作成し、ログ記録を実装する際、 デザイナーの [パッケージ エクスプローラー] タブ上の [ログ プロバイダー] SSIS フォルダーに、コレクション メンバーの一覧が表示されます。

ログ プロバイダーを構成するには、ログ プロバイダーの名前と説明を入力し、ログ プロバイダーが使用する接続マネージャーを指定します。 SQL Server のログ プロバイダーでは、OLE DB 接続マネージャーが使用されます。 テキスト ファイル、 SQL Server プロファイラー、および XML ファイルのログ プロバイダーでは、ファイル接続マネージャーが使用されます。 Windows イベント ログのログ プロバイダーでは、Windows イベント ログに直接書き込まれるので、接続マネージャーが使用されません。 詳細については、「 OLE DB Connection Manager 」および「 File Connection Manager」を参照してください。

ログ記録のカスタマイズ

イベント メッセージまたはカスタム メッセージのログ機能をカスタマイズするために、 Integration Services には、ログ エントリに通常書き込まれる情報のスキーマが用意されています。 Integration Services のログ スキーマは、ログ記録できる情報を定義します。 ログ エントリごとにログ スキーマから要素を選択します。

パッケージおよびパッケージ内のコンテナーやタスクが、同じ情報をログ記録する必要はありません。また、同一パッケージやコンテナーのタスクが別々の情報をログ記録することができます。 たとえば、パッケージではパッケージが開始されたときにオペレーターに関する情報をログに書き込み、あるタスクではタスク失敗の原因を書き込み、別のタスクではエラー発生時に情報を書き込むという処理が可能です。 パッケージおよびパッケージ内のコンテナーやタスクが複数のログを使用する場合、同じ情報がすべてのログに書き込まれます。

ログ記録するイベントと各イベントに対して書き込む情報を指定して、必要に応じたログ記録のレベルを選択できます。 これにより、他のイベントに比べて有益な情報が得られるイベントがわかります。 たとえば、 PreExecute イベントについてはコンピューター名とオペレーター名のみをログ記録し、 Error イベントについては利用可能なすべての情報を記録するとよいでしょう。

ログ ファイルがディスク領域を大量に消費したり、過剰にログが記録されたりするとパフォーマンスが低下します。これを防止するため、特定のイベントとログ記録する情報項目を選択して、ログ記録を制限することができます。 たとえば、エラーが発生した日付とコンピューター名のみを記録するようにログを設定できます。

SSIS デザイナーの [SSIS ログの構成] ダイアログ ボックスを使用して、ログ オプションを定義できます。

ログ スキーマ

次の表に、ログ スキーマの要素を示します。

要素 説明
Computer ログ イベントが発生したコンピューターの名前。
演算子 パッケージを起動したユーザーの ID。
SourceName ログ イベントが発生したコンテナーまたはタスクの名前。
[SourceID] ログ イベントが発生したパッケージ、For ループ コンテナー、Foreach ループ コンテナー、シーケンス コンテナー、またはタスクの一意識別子。
[ExecutionID] パッケージ実行インスタンスの GUID。

注: 単一のパッケージを実行すると、ExecutionID 要素の値が異なるログ エントリが作成される場合があります。 たとえば、 SQL Server Data Toolsで 1 つのパッケージを実行すると、検証フェーズでは SQL Server Data Toolsに対応する ExecutionID 要素を持つログ エントリが作成されます。 一方、実行フェーズでは、dtshost.exe に対応する ExecutionID 要素を持つログ エントリが作成されます。 また、パッケージ実行タスクを含むパッケージを実行すると、これらの各タスクで子パッケージが実行されます。 これらの子パッケージでは、親パッケージが作成するログ エントリとは異なる ExecutionID 要素を持つログ エントリが作成される場合があります。
[MessageText] ログ エントリに関連付けられているメッセージ。
[DataBytes] ログ エントリ固有のバイト配列。 このフィールドの意味は、ログ エントリによって異なります。

次の表は、 [SSIS ログの構成] ダイアログ ボックスの [詳細] タブでは利用できないログ スキーマ内の 3 つの追加要素について説明しています。

要素 説明
StartTime コンテナーまたはタスクの実行が開始した時間。
EndTime コンテナーまたはタスクの実行が停止した時間。
DataCode コンテナーまたはタスクの実行結果を示す DTSExecResult 列挙体の値を通常含んだ整数値 (省略可能)。

0 - 成功

1 - 失敗

2 - 完了

3 - キャンセル

ログ エントリ

Integration Services では、あらかじめ定義されたイベントのログ エントリをサポートし、多くの Integration Services オブジェクトにカスタム ログ エントリを提供します。 デザイナーの [SSIS ログの構成] SSIS ダイアログ ボックスに、これらのイベントとカスタム ログ エントリが一覧表示されます。

次の表に、実行時イベント発生時にログ エントリを書き込むために有効にできる、あらかじめ定義されたイベントを示します。 これらのログ エントリは、実行可能ファイル、パッケージ、そのパッケージに含まれるタスクおよびコンテナーに適用されます。 ログ エントリ名は、ログ エントリが書き込まれる原因となった、発生実行時イベントの名前と同じです。

events 説明
OnError エラー発生時にログ エントリを書き込みます。
OnExecStatusChanged デバッグ中に (コンテナー以外の) タスクが中断または再開されたときにログ エントリを書き込みます。
OnInformation 実行可能ファイルの検証および実行中に、情報を報告するログ エントリを書き込みます。
OnPostExecute 実行可能ファイルの実行が終了した直後にログ エントリを書き込みます。
OnPostValidate 実行可能ファイルの検証が終了したときにログ エントリを書き込みます。
OnPreExecute 実行可能ファイルの実行直前にログ エントリを書き込みます。
OnPreValidate 実行可能ファイルの検証が開始される前にログ エントリを書き込みます。
OnProgress 実行可能ファイルの処理で測定可能な進捗があったときにログ エントリを書き込みます。
OnQueryCancel タスク処理中に、実行のキャンセルが可能な時点に達したときにログ エントリを書き込みます。
OnTaskFailed タスクが失敗したときにログ エントリを書き込みます。
OnVariableValueChanged 変数の値が変更されたときにログ エントリを書き込みます。
OnWarning 警告が発生したときにログ エントリを書き込みます。
PipelineComponentTime 各データ フロー コンポーネントに対する検証および実行の各フェーズのログ エントリを書き込みます。 ログ エントリは、各フェーズの処理時間を示します。
Diagnostic

DiagnosticEx
診断情報を提供するログ エントリを書き込みます。

たとえば、外部データ プロバイダーを呼び出す前と後にメッセージをログに書き込むことができます。 詳細については、「 パッケージ実行のトラブルシューティング ツール」を参照してください。

エラーが発生したデータ フロー内の列の列名を調べるには、 DiagnosticEx イベントを記録します。 このイベントは、データ フロー系列マップをログに書き込みます。 エラー出力でキャプチャされた列識別子を使用して、この系列マップの列名を調べることができます。 詳細については、「データのエラー処理」を参照してください。

DiagnosticEx イベントでは XML 出力に含まれる空白が維持されないので、ログのサイズを軽減できます。 読みやすくするために、XML 書式と構文の強調表示をサポートする XML エディター (たとえば Visual Studio) にログをコピーします。

注: SQL Server ログ プロバイダーを使用して DiagnosticEx イベントを記録する場合、出力が切り捨てられる可能性があります。 SQL Server ログ プロバイダーの メッセージ フィールドは、nvarchar (2048) 型です。 出力が切り捨てられないようにするには、 DiagnosticEx イベントを記録するときに別のログ プロバイダーを使用してください。

パッケージおよび多くのタスクには、ログ機能を有効にできるカスタム ログ エントリがあります。 たとえば、メール送信タスクには SendMailTaskBegin カスタム ログ エントリがあります。これを使用すると、電子メール メッセージの送信前に、メール送信タスクの実行開始時の情報をログに書き込むことができます。 詳細については、「 Custom Messages for Logging」を参照してください。

パッケージのコピーの区別

ログ データには、ログ エントリが属しているパッケージの名前と GUID が含まれます。 既存のパッケージをコピーして新しいパッケージを作成する場合、既存のパッケージの名前と GUID もコピーされます。 したがって、同じ GUID と名前が付いたパッケージが 2 つになり、ログ データ内のパッケージの区別が困難になります。

このようなあいまいさを回避するには、新しいパッケージの名前と GUID を更新する必要があります。 SQL Server Data Tools (SSDT)の [プロパティ] ウィンドウで、 ID プロパティの GUID を再生成し、 Name プロパティの値を更新できます。 プログラムから、または dtutil コマンド プロンプトを使用して、GUID と名前を変更することもできます。 詳細については、「 パッケージのプロパティを設定する 」と「 dtutil ユーティリティ」を参照してください。

親のログ オプション

一般的に、タスク、For ループ コンテナー、Foreach ループ コンテナー、シーケンス コンテナーのログ オプションは、それらが含まれているパッケージや親コンテナーのログ オプションと同じです。 この場合、親コンテナーからログ オプションを継承するように設定できます。 たとえば、SQL 実行タスクが含まれている For ループ コンテナーがある場合、SQL 実行タスクでは For ループ コンテナーに設定されたログ オプションを使用できます。 親のログ オプションを使用するには、コンテナーの LoggingMode プロパティを UseParentSettingに設定します。 このプロパティは、 [プロパティ] SQL Server Data Tools (SSDT) ウィンドウ、または デザイナーの [SSIS ログの構成] SSIS ダイアログ ボックスで設定できます。

ログのテンプレート

[SSIS ログの構成] ダイアログ ボックスでは、頻繁に使用するログ構成をテンプレートとして作成および保存して、複数のパッケージでそのテンプレート使用できます。 これにより、複数のパッケージで一貫したログ記録の方法を簡単に使用でき、テンプレートを更新して適用することによって簡単にパッケージのログ設定を修正できます。 テンプレートは XML ファイルとして格納されます。

[SSIS ログの構成] ダイアログ ボックスを使用してログ機能を設定するには

  1. パッケージおよびタスクのログ記録を有効にします。 ログは、パッケージ レベル、コンテナー レベル、またはタスク レベルで記録できます。 パッケージ、コンテナー、タスクに対して、それぞれ異なるログを指定できます。

  2. ログ プロバイダーを選択して、パッケージのログを追加します。 ログはパッケージ レベルでのみ作成可能で、タスクやコンテナーではパッケージで作成されたログのいずれかを使用します。 各ログは、テキスト ファイル、 SQL Server プロファイラー、 SQL Server、Windows のイベント ログ、または XML ファイルのいずれかのログ プロバイダーに関連付けられます。 詳細については、「 SQL Server Data Tools でパッケージのログ記録を有効にする」を参照してください。

  3. ログに取り込むイベントと、各イベントのログ スキーマ情報を選択します。 詳細については、「 保存されている構成ファイルを使用してログ記録を構成する」を参照してください。

ログ プロバイダーの構成

プロパティを設定するには SSIS デザイナーから行うか、またはプログラムによって設定します。

ログ プロバイダーは、パッケージにログ記録を実装する手順の中で作成して構成します。

ログ プロバイダーを作成した後にプロパティを表示および変更するには、 SQL Server Data Tools (SSDT)のプロパティ ウィンドウを使用します。

プログラムによってこれらのプロパティを設定する方法の詳細については、 LogProvider クラスのドキュメントを参照してください。

データ フロー タスクのログ機能の構成

データ フロー タスクには、パフォーマンスの監視と調整に使用できるカスタム ログ エントリが数多くあります。 たとえば、メモリ リークを起こす可能性のあるコンポーネントを監視したり、特定のコンポーネントの実行所要時間を追跡できます。 カスタム ログ エントリの一覧とサンプルのログ出力については、「 Data Flow Task」を参照してください。

エラーが発生した列の名前をキャプチャする

データ フローのエラー出力を構成した場合、既定でエラーが発生した列の数値識別子のみがエラー出力に含まれます。 詳細については、「データのエラー処理」を参照してください。

列の名前を確認するには、ログ記録を有効にして、 DiagnosticEx イベントを選択します。 このイベントは、データ フロー系列マップをログに書き込みます。 その後、この列マップの識別子から列名を参照できます。 DiagnosticEx イベントでは XML 出力に含まれる空白が維持されないので、ログのサイズを軽減できます。 読みやすくするために、XML 書式と構文の強調表示をサポートする XML エディター (たとえば Visual Studio) にログをコピーします。

PipelineComponentTime イベントの使用

カスタム ログ エントリの中で最も役に立つのは、PipelineComponentTime イベントです。 このログ エントリは、データ フローの各コンポーネントが主要な 5 つの処理手順それぞれで要するミリ秒数を報告します。 次の表で、これらの処理手順について説明します。 Integration Services の開発者は、これらの手順を PipelineComponent」を参照してください。

手順 説明
検証 コンポーネントは、有効なプロパティ値と構成設定を確認します。
PreExecute コンポーネントは、データ行の処理を開始する前に 1 回限りの処理を実行します。
PostExecute コンポーネントは、すべてのデータ行を処理した後に 1 回限りの処理を実行します。
ProcessInput 変換コンポーネントまたは変換先コンポーネントは、上流変換元または変換から渡されたデータの受信行を処理します。
PrimeOutput 変換元コンポーネントまたは変換コンポーネントは、下流変換コンポーネントまたは変換先コンポーネントに渡されるデータのバッファーを入力します。

PipelineComponentTime イベントを有効にすると、 Integration Services では、各コンポーネントが実行した処理手順ごとに 1 つのメッセージをログに記録します。 以下のログ エントリに、 Integration Services CalculatedColumns パッケージ サンプルでログに記録されるメッセージのサブセットを示します。

The component "Calculate LineItemTotalCost" (3522) spent 356 milliseconds in ProcessInput.

The component "Sum Quantity and LineItemTotalCost" (3619) spent 79 milliseconds in ProcessInput.

The component "Calculate Average Cost" (3662) spent 16 milliseconds in ProcessInput.

The component "Sort by ProductID" (3717) spent 125 milliseconds in ProcessInput.

The component "Load Data" (3773) spent 0 milliseconds in ProcessInput.

The component "Extract Data" (3869) spent 688 milliseconds in PrimeOutput filling buffers on output "OLE DB Source Output" (3879).

The component "Sum Quantity and LineItemTotalCost" (3619) spent 141 milliseconds in PrimeOutput filling buffers on output "Aggregate Output 1" (3621).

The component "Sort by ProductID" (3717) spent 16 milliseconds in PrimeOutput filling buffers on output "Sort Output" (3719).

これらのログ エントリは、データ フロー タスクが、次の手順にほとんどの時間を要することを示しています。ここでは、手順を降順に示します。

  • "Extract Data" という名前の OLE DB ソースは、データの読み込みに 688 ミリ秒費やしました。データの読み込み中です。

  • "Calculate LineItemTotalCost" という名前の派生列変換は、受信行での計算の実行に 356 ミリ秒費やしました。

  • "Sum Quantity and LineItemTotalCost" という名前の集計変換は、計算の実行と次の変換へのデータの受け渡しに合計 220 ミリ秒 (PrimeOutput に 141 ミリ秒、ProcessInput に 79 秒) 費やしました。

SQL Server Data Tools でパッケージのログ記録を有効にする

この手順では、パッケージにログを追加し、パッケージ レベルのログ記録を構成し、ログ構成を XML ファイルに保存する方法について説明します。 ログはパッケージ レベルでのみ追加できますが、パッケージに含まれるコンテナーでのログを有効にするためにパッケージでログ記録を実行する必要はありません。

重要

Integration Services プロジェクトを Integration Services サーバーに配置した場合、パッケージ実行に対して設定したログ記録レベルは、SQL Server Data Tools (SSDT) を使用して構成したパッケージのログ記録レベルをオーバーライドします。

既定では、パッケージに含まれるコンテナーは、親コンテナーと同じログ構成を使用します。 それぞれのコンテナーのログ オプションの設定については、「 保存されている構成ファイルを使用してログ記録を構成する」をご覧ください。

パッケージ内でのログ記録を有効にするには

  1. SQL Server Data Toolsで、目的のパッケージが含まれている Integration Services プロジェクトを開きます。

  2. 次に、 [SSIS] メニューの [ログ記録] をクリックします。

  3. [プロバイダーの種類] 一覧からログ プロバイダーを選択し、 [追加] をクリックします。

  4. [構成] 列で、接続マネージャーを選択するか、または [<新しい接続>] をクリックしてこのログ プロバイダーに適した種類の接続マネージャーを新しく作成します。 選択したプロバイダーに応じて、次のいずれかの接続マネージャーを使用します。

    • テキスト ファイル用には、ファイル接続マネージャーを使用します。 詳細については、「 File Connection Manager

    • SQL Server プロファイラー用には、ファイル接続マネージャーを使用します。

    • SQL Server用には、OLE DB 接続マネージャーを使用します。 詳細については、「 OLE DB 接続マネージャー」を参照してください。

    • Windows イベント ログ用には何も指定しません。 SSIS によってログが自動的に作成されます。

    • XML ファイル用には、ファイル接続マネージャーを使用します。

  5. パッケージで使用するそれぞれのログについて、手順 3. ~ 4. を繰り返します。

    注意

    パッケージでは、それぞれの種類で複数のログを使用できます。

  6. 必要に応じて、パッケージレベルのチェック ボックスをオンにします。次に、パッケージレベルのログ記録で使用するログを選択し、 [詳細] タブをクリックします。

  7. [詳細] タブで、 [イベント] をオンにしてすべてのログ エントリのログを記録することを指定するか、または [イベント] をオフにしてイベントを個別に選択します。

  8. 必要に応じて、 [詳細設定] をクリックし、ログに記録する情報を指定します。

    注意

    既定では、すべての情報がログに記録されます。

  9. [詳細] タブで、[保存] をクリックします。[名前を付けて保存] ダイアログ ボックスが表示されます。 ログ構成を保存するフォルダーに移動し、新しいログ構成のファイル名を入力し、 [保存] をクリックします。

  10. [OK] をクリックします。

  11. 更新したパッケージを保存するには、 [ファイル] メニューの [選択されたファイルを上書き保存] をクリックします。

[SSIS ログの構成] ダイアログ ボックス

SSIS ログの構成 ダイアログ ボックスを使用して、パッケージのログ記録オプションを定義します。

目的に合ったトピックをクリックしてください

  1. [SSIS ログの構成] ダイアログ ボックスを開く

  2. [コンテナー] ペインでオプションを構成する

  3. [プロバイダーとログ] タブでオプションを構成する

  4. [詳細] タブでオプションを構成する

[SSIS ログの構成] ダイアログ ボックスを開く

[SSIS ログの構成] ダイアログ ボックスを開くには

  • SSIS デザイナーで、 [SSIS] メニューの [ログ記録] をクリックします。

[コンテナー] ペインでオプションを構成する

[SSIS ログの構成] ダイアログ ボックスの [コンテナー] ペインを使用すると、パッケージおよびパッケージのコンテナーでログを有効できます。

オプション

Containers
パッケージとパッケージのコンテナーでログを有効にするには、階層ビューのチェック ボックスをオンにします。

  • オフになっている場合、そのコンテナーでログは無効になります。 ログを有効にする場合はオンにします。

  • 淡色表示になっている場合、コンテナーは親のログ オプションを使用します。 このオプションは、パッケージには使用できません。

  • オンにすると、コンテナーは固有のログ オプションを定義します。

コンテナーが淡色表示になっている場合に、そのコンテナーにログ オプションを設定するには、チェック ボックスを 2 回クリックします。 最初のクリックでチェック ボックスがオフになった後、2 番目のクリックでオンになったら、使用するログ プロバイダーを選択し、ログに記録する情報を指定できます。

[プロバイダーとログ] タブでオプションを構成する

[SSIS ログの構成] ダイアログ ボックスの [プロバイダーとログ] タブを使用すると、ランタイム イベントをキャプチャするログを作成したり構成したりできます。

オプション

[プロバイダーの種類]
ログ プロバイダーの種類を一覧から選択します。

追加
パッケージのログ プロバイダーのコレクションに、指定した種類のログを追加します。

Name
[SSIS ログの構成] ダイアログ ボックスの [コンテナー] ペインで選択したコンテナーまたはタスクについて、ログを有効または無効にします。 [名前] フィールドは編集可能です。 プロバイダーの既定の名前を使用するか、わかりやすい一意な名前を入力します。

説明
[説明] フィールドは編集可能です。 クリックして、ログの既定の説明を変更します。

構成
既存の接続マネージャーを一覧から選択するか、<[新しい接続]> をクリックして新しい接続マネージャーを作成します。 ログ プロバイダーの種類によっては、OLE DB 接続マネージャーやファイル接続マネージャーを構成できます。 Microsoft Windows イベント ログ用のログ プロバイダーの場合、接続は不要です。

関連項目:「 OLE DB Connection Manager 」、「 File Connection Manager

削除
ログ プロバイダーを選択して、 [削除] をクリックします。

[詳細] タブでオプションを構成する

[SSIS ログの構成] ダイアログ ボックスの [詳細] タブで、ログ記録を有効にするイベントと、ログ記録する詳細情報を指定します。 選択した情報は、パッケージ内のすべてのログ プロバイダーに適用されます。 たとえば、 SQL Server インスタンスとテキスト ファイルに別々の情報を書き込むことはできません。

オプション

イベント
イベントのログ記録を有効または無効にします。

説明
イベントの説明が表示されます。

詳細
ログ記録するイベントをオンまたはオフにし、各イベントでログ記録する情報をオンまたはオフにします。 [標準] をクリックすると、ログの詳細情報がイベントの一覧を除いてすべて非表示になります。 次の情報をログ記録できます。

説明
コンピューター ログ記録されたイベントが発生したコンピューターの名前。
[オペレーター] パッケージを起動した人物のユーザー名。
[SourceName] ログ記録されたイベントが発生したパッケージ、コンテナー、またはタスクの名前。
[SourceID] ログ記録されたイベントが発生したパッケージ、コンテナー、またはタスクの GUID (global unique identifier)。
[ExecutionID] パッケージ実行インスタンスの GUID。
[MessageText] ログ エントリに関連付けられているメッセージ。
[DataBytes] 将来利用するために予約されています。

Basic
ログ記録するイベントをオンまたはオフにします。 イベントの一覧を除いて、ログの詳細情報が非表示になります。 イベントを選択すると、既定でそのイベントのすべてのログ詳細情報が選択されます。 [詳細設定] をクリックすると、ログの詳細情報がすべて表示されます。

[読み込み]
ログのオプションを設定するテンプレートとして使用される、既存の XML ファイルを指定します。

および
構成の詳細をテンプレートとして XML ファイルに保存します。

保存されている構成ファイルを使用してログ記録を構成する

この手順では、以前に保存したログ構成ファイルを読み込んでパッケージ内の新しいコンテナーのログ記録を構成する方法について説明します。

既定では、パッケージに含まれるすべてのコンテナーは、親コンテナーと同じログ構成を使用します。 たとえば、Foreach ループ内のタスクは、Foreach ループと同じログ構成を使用します。

コンテナーのログ記録を構成するには

  1. SQL Server Data Toolsで、目的のパッケージが含まれている Integration Services プロジェクトを開きます。

  2. 次に、 [SSIS] メニューの [ログ記録] をクリックします。

  3. パッケージ ツリー ビューを展開し、構成するコンテナーを選択します。

  4. [プロバイダーとログ] タブで、コンテナーに対して使用するログを選択します。

    注意

    ログは、パッケージ レベルでのみ作成できます。 詳細については、「 SQL Server Data Tools でパッケージのログ記録を有効にする」を参照してください。

  5. [詳細] タブをクリックし、 [読み込み] をクリックします。

  6. 使用するログ構成ファイルを参照し、 [開く] をクリックします。

  7. 必要に応じて、 [イベント] 列のチェック ボックスをオンにして、ログ記録を行う異なるログ エントリを選択することもできます。 [詳細設定] をクリックして、このエントリのログ記録を行うための情報の種類を選択します。

    注意

    最初にログ構成を作成するときに使用されたコンテナーでは使用できない追加のログ エントリが新しいコンテナーに含まれている場合があります。 これらの追加のログ エントリをログに記録するには、手動で選択する必要があります。

  8. [保存] をクリックして、ログ構成の更新バージョンを保存します。

  9. 更新したパッケージを保存するには、 [ファイル] メニューの [選択されたファイルを上書き保存] をクリックします。

SSIS サーバーでのパッケージ実行のログ記録を有効にする

このトピックでは、 Integration Services サーバーに配置したパッケージを実行するときに、パッケージのログ記録レベルを設定または変更する方法について説明します。 パッケージを実行するときに設定したログ記録レベルは、SQL Server Data Tools (SSDT) での設計時に構成したパッケージのログ記録レベルをオーバーライドします。 詳細については、「 SQL Server Data Tools でパッケージのログ記録を有効にする 」を参照してください。

サーバーの既定のログ レベル プロパティを確認および調整するには

  1. SQL Server インスタンスで、オブジェクト エクスプローラーのパッケージにアクセスします。

  2. [Integration Services カタログ] を選択します。

  3. SSISDB を右クリックし、 [プロパティ] を選択します。

  4. [カタログのプロパティ] で、 [操作ログ] グループ ボックスと、 [Service-Wide Default Logging Level](サービス全体の既定のログ レベル) エントリを探します。

このトピックで説明している組み込みのログ記録レベルのいずれかを選択するか、既存のカスタマイズしたログ記録レベルを選択できます。 選択したログ記録レベルは、既定で SSIS カタログに展開されているすべてのパッケージに適用されます。 また、既定で SSIS パッケージを実行する SQL エージェント ジョブにも適用されます。

また、次のいずれかの方法で、個々のパッケージのログ記録レベルを指定することもできます。 このトピックでは最初の方法について説明します。

  • [パッケージの実行] ダイアログ ボックスを使用してパッケージ実行インスタンスを構成する

  • catalog.set_execution_parameter_value (SSISDB データベース) を使用して、実行のインスタンスのパラメーターを設定する

  • [新しいジョブ ステップ] ダイアログ ボックスを使用してパッケージ実行用の SQL Server エージェント ジョブを構成する

[パッケージの実行] ダイアログ ボックスを使用して、パッケージのログ記録レベルを設定します。

  1. SQL Server Management Studioのオブジェクト エクスプローラーで、パッケージに移動します。

  2. パッケージを右クリックし、 [実行] をクリックします。

  3. [パッケージの実行] ダイアログ ボックスで、 [詳細設定] タブをクリックします。

  4. [ログ記録レベル] で、ログ記録レベルを選択します。 このトピックでは、使用できる値について説明します。

  5. 他のパッケージの構成を完了し、 [OK] をクリックしてパッケージを実行します。

ログ記録レベルを選択する

次の組み込みレベルを使用できます。 また、既存のカスタマイズされたログ記録レベルを選択することもできます。 このトピックでは、カスタマイズのログ記録レベルについて説明します。

[ログ記録レベル] 説明
なし ログ記録をオフにします。 パッケージの実行状態のみがログに記録されます。
Basic カスタム イベントと診断イベントを除く、すべてのイベントをログに記録します。 これが既定値です。
RuntimeLineage データ フロー内の系列情報を追跡するために必要なデータを収集します。 この系列情報を解析して、タスク間の系列の関係をマッピングできます。 ISV と開発者は、この情報を利用して、カスタム系列マッピング ツールを構築できます。
パフォーマンス パフォーマンス統計、および OnError イベントと OnWarning のイベントのみをログに記録します。

"実行のパフォーマンス" レポートは、パッケージ データ フロー コンポーネントのアクティブな時間と合計時間を示します。 この情報は、最後のパッケージの実行のログ記録レベルが [パフォーマンス] または [詳細] に設定されていた場合にのみ表示されます。 詳細については、「 Reports for the Integration Services Server」を参照してください。

catalog.execution_component_phases ビューは、実行の各フェーズでのデータ フロー コンポーネントの開始時刻と終了時刻を表示します。 これらのコンポーネントの情報は、パッケージの実行のログ記録レベルが [パフォーマンス] または [詳細] に設定されている場合にのみ、このビューに表示されます。
"詳細" カスタム イベントと診断イベントを含む、すべてのイベントをログに記録されます。

カスタム イベントには、 Integration Services タスクによってログに記録されるイベントが含まれます。 カスタム イベントの詳細については、「 Custom Messages for Logging」を参照してください。

DiagnosticEx イベントは、診断イベントの例です。 パッケージ実行タスクで子パッケージを実行するたびに、このイベントは、子パッケージに渡されたパラメーター値をキャプチャします。

また、 DiagnosticEx イベントを使用すると、行レベルのエラーが発生した列名も取得できます。 このイベントは、データ フロー系列マップをログに書き込みます。 エラー出力でキャプチャされた列識別子を使用して、この系列マップの列名を調べることができます。 詳細については、「データのエラー処理」を参照してください。

DiagnosticEx のメッセージ列の値は XML テキストです。 パッケージ実行のメッセージ テキストを表示するには、catalog.operation_messages (SSISDB データベース) ビューのクエリを実行します。 DiagnosticEx イベントでは XML 出力に含まれる空白が維持されないので、ログのサイズを軽減できます。 読みやすくするために、XML 書式と構文の強調表示をサポートする XML エディター (たとえば Visual Studio) にログをコピーします。

catalog.execution_data_statistics ビューは、パッケージ実行で、データ フロー コンポーネントが下流コンポーネントへデータを送信するたびに 1 行を表示します。 ビューにこの情報を取得するには、ログ記録レベルを [詳細] に設定する必要があります。

[カスタマイズされたログ記録レベルの管理] ダイアログ ボックスを使用して、カスタマイズされたログ記録レベルを作成して管理する

必要な統計情報とイベントのみを収集するカスタマイズされたログ記録レベルを作成できます。 また、必要に応じて、変数値、接続文字列、コンポーネントのプロパティなど、イベントのコンテキストもキャプチャできます。 パッケージを実行するときに、組み込みのログ記録レベルを選択できる場所であればどこでも、カスタマイズされたログ記録レベルを選択できます。

ヒント

パッケージ変数の値をキャプチャするには、変数の IncludeInDebugDump プロパティを Trueに設定する必要があります。

  1. カスタマイズされたログ記録レベルを作成および管理するには、 SQL Server Management Studioで、SSISDB データベースを右クリックし、 [カスタマイズされたログ記録レベル] を選択し、 [カスタマイズされたログ記録レベルの管理] ダイアログ ボックスを開きます。 [カスタマイズされたログ記録レベル] リストには、既存のカスタマイズされたログ記録レベルがすべて含まれています。

  2. 新しいカスタマイズされたログ記録レベルを 作成 するには、 [作成] をクリックし、名前と説明を入力します。 [統計情報] タブと [イベント] タブで、収集する統計情報とイベントを選択します。 [イベント] タブで、必要に応じて個々のイベントについて [コンテキストを含める] を選択します。 [保存] をクリックします。

  3. 既存のカスタマイズされたログ記録レベルを 更新 するには、リストから選択し、再構成して [保存] をクリックします。

  4. 既存のカスタマイズされたログ記録レベルを 削除 するには、リストから選択し、 [削除] をクリックします。

カスタマイズされたログ記録レベルのアクセス許可

  • SSISDB データベースのすべてのユーザーは、パッケージの実行時に、カスタマイズされたログ記録レベルを表示し、カスタマイズされたログ記録レベルを選択できます。

  • ssis_admin 管理者または sysadmin ロールのユーザーのみが、カスタマイズされたログ記録レベルの作成、更新、または削除を行うことができます。

ログ記録用のカスタム メッセージ

SQL Server Integration Services には、パッケージや多くのタスクのログ エントリを書き込むための豊富なカスタム イベントが用意されています。 記録したエントリを使用すれば、定義済みのイベントやユーザー定義メッセージを後の分析用に記録しておくことで、実行の進行状況、結果、および問題点に関する詳細を保管できます。 たとえば、一括挿入の開始時刻と終了時刻を記録しておけば、パッケージ実行時のパフォーマンスの問題を特定できます。

カスタム ログ エントリとは、パッケージ、すべてのコンテナー、およびタスクに使用できる一連の標準的なログ記録イベントとは異なるエントリのセットです。 カスタム ログ エントリは、パッケージ内の特定のタスクに関する有益な情報を取得するように調整されます。 たとえば、SQL 実行タスクのカスタム ログ エントリの 1 つに、そのタスクで実行される SQL ステートメントをログに記録するものがあります。

すべてのログ エントリには、パッケージの開始時と終了時に自動的に書き込まれるログ エントリなど、日付と時刻に関する情報が含まれます。 多くのログ イベントでは、ログに複数のエントリが書き込まれます。 通常、イベントにいくつか異なるフェーズが含まれている場合に複数のエントリが書き込まれます。 たとえば、 ExecuteSQLExecutingQuery ログ イベントでは、3 つのエントリが書き込まれます。1 つ目はタスクがデータベースへの接続を取得した後、2 つ目は SQL ステートメントの準備が開始された後、3 つ目は SQL ステートメントの実行が完了した後に書き込まれます。

次の Integration Services オブジェクトには、カスタム ログ エントリがあります。

Package

一括挿入タスク

データ フロー タスク

DTS 2000 実行タスク

プロセス実行タスク

SQL 実行タスク

ファイル システム タスク

FTP タスク

メッセージ キュー タスク

スクリプト タスク

メール送信タスク

データベース転送タスク

エラー メッセージ転送タスク

ジョブ転送タスク

ログイン転送タスク

Master ストアド プロシージャ転送タスク

SQL Server オブジェクトの転送タスク

Web サービス タスク

WMI データ リーダー タスク

WMI イベント監視タスク

XML タスク

ログ エントリ

Package

次の表は、パッケージのカスタム ログ エントリの一覧です。

ログ エントリ 説明
PackageStart パッケージの実行が開始されたことを示します。 このログ エントリは自動的にログに書き込まれます。 除外することはできません。
PackageEnd パッケージが完了したことを示します。 このログ エントリは自動的にログに書き込まれます。 除外することはできません。
Diagnostic 同時実行できる実行可能ファイル数など、パッケージの実行に影響するシステム構成に関する情報を提供します。

診断 ログ エントリに、外部データ プロバイダーの呼び出し前後のエントリも含まれています。

一括挿入タスク

次の表は、一括挿入タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
DTSBulkInsertTaskBegin 一括挿入が開始されたことを示します。
DTSBulkInsertTaskEnd 一括挿入が終了したことを示します。
DTSBulkInsertTaskInfos タスクに関する説明情報を提供します。

[データ フロー タスク]

次の表は、データ フロー タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
BufferSizeTuning データ フロー タスクでバッファーのサイズが変更されたことを示します。 このログ エントリはサイズ変更の理由を説明し、一時的な新しいバッファー サイズを表示します。
OnPipelinePostEndOfRowset ProcessInput メソッドの最終呼び出しで設定される、行セットの終了シグナルがコンポーネントに通知されたことを示します。 エントリは、データ フロー内で入力を処理するコンポーネントごとに書き込まれます。 このエントリには、コンポーネント名が含まれます。
OnPipelinePostPrimeOutput コンポーネントが PrimeOutput メソッドの最終呼び出しを完了したことを示します。 データ フローによっては、複数のログ エントリが書き込まれる場合があります。 コンポーネントがソースの場合、コンポーネントが行の処理を完了したことを意味します。
OnPipelinePreEndOfRowset ProcessInput メソッドの最終呼び出しで設定される、行セットの終了シグナルをコンポーネントがまもなく受信することを示します。 エントリは、データ フロー内で入力を処理するコンポーネントごとに書き込まれます。 このエントリには、コンポーネント名が含まれます。
OnPipelinePrePrimeOutput コンポーネントが、 PrimeOutput メソッドからの呼び出し行セットの終了シグナルをまもなく受信することを示します。 データ フローによっては、複数のログ エントリが書き込まれる場合があります。
OnPipelineRowsSent ProcessInput メソッドの呼び出しによってコンポーネント入力に指定された行数を報告します。 ログ エントリにはコンポーネント名が含まれます。
PipelineBufferLeak バッファー マネージャーの終了後もバッファーを保持しているコンポーネントに関する情報を提供します。 つまり、バッファー リソースが解放されていないため、メモリ リークの原因になる可能性があります。 このログ エントリは、コンポーネントの名前とバッファーの ID を含みます。
PipelineExecutionPlan データ フローの実行プランを報告します。 バッファーをコンポーネントに送信する方法に関する情報を提供します。 この情報は、PipelineExecutionTrees エントリと組み合わせて、タスク内での実行内容を示します。
PipelineExecutionTrees データ フロー内のレイアウトの実行ツリーを報告します。 データ フロー エンジンのスケジューラは、このツリーを使用して、データ フローの実行プランを構築します。
PipelineInitialization タスクに関する初期化情報を提供します。 この情報には、BLOB データの一時的な保存に使用するディレクトリ、既定のバッファー サイズ、およびバッファー内の行数が含まれます。 データ フロー タスクの構成によっては、複数のログ エントリが書き込まれる場合があります。

DTS 2000 実行タスク

次の表は、DTS 2000 実行タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
ExecuteDTS80PackageTaskBegin タスクが DTS 2000 パッケージの実行を開始したことを示します。
ExecuteDTS80PackageTaskEnd タスクが終了したことを示します。

注: DTS 2000 パッケージは、タスク終了後も引き続き実行される場合があります。
ExecuteDTS80PackageTaskTaskInfo タスクに関する説明情報を提供します。
ExecuteDTS80PackageTaskTaskResult タスクで実行された DTS 2000 パッケージの実行結果を報告します。

プロセス実行タスク

次の表は、プロセス実行タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
ExecuteProcessExecutingProcess タスクで実行するように構成されている実行可能ファイルの実行プロセスに関する情報を提供します。

2 つのログ エントリが書き込まれます。 1 つのエントリには、タスクで実行される実行可能ファイルの名前と場所が含まれ、もう 1 つのエントリは、実行可能ファイルの終了を記録します。
ExecuteProcessVariableRouting 実行可能ファイルの入力と出力にルーティングされる変数に関する情報を提供します。 ログ エントリは、stdin (入力)、stdout (出力)、および stderr (エラー出力) に書き込まれます。

SQL 実行タスク

次の表では、SQL 実行タスクのカスタム ログ エントリを説明します。

ログ エントリ 説明
ExecuteSQLExecutingQuery SQL ステートメントの実行フェーズに関する情報を提供します。 タスクがデータベースへの接続を取得したとき、SQL ステートメントの準備が開始されたとき、および SQL ステートメントの実行が完了した後に、ログ エントリが書き込まれます。 準備フェーズのログ エントリには、タスクで使用される SQL ステートメントが含まれます。

ファイル システム タスク

次の表では、ファイル システム タスクのカスタム ログ エントリを説明します。

ログ エントリ 説明
FileSystemOperation タスクで実行される操作を報告します。 ログ エントリは、ファイル システム操作の開始時に書き込まれます。これには、操作の基になるファイルと操作対象のファイルに関する情報が含まれます。

FTP タスク

次の表は、FTP タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
FTPConnectingToServer タスクで FTP サーバーへの接続が開始されたことを示します。
FTPOperation タスクで実行された FTP 操作の開始および種類を報告します。

Message Queue Task

次の表は、メッセージ キュー タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
MSMQAfterOpen タスクで開いていたメッセージ キューを終了したことを示します。
MSMQBeforeOpen タスクがメッセージ キューを開く操作を開始したことを示します。
MSMQBeginReceive タスクがメッセージの受信を開始したことを示します。
MSMQBeginSend タスクがメッセージの送信を開始したことを示します。
MSMQEndReceive タスクがメッセージの受信を終了したことを示します。
MSMQEndSend タスクがメッセージの送信を終了したことを示します。
MSMQTaskInfo タスクに関する説明情報を提供します。
MSMQTaskTimeOut タスクがタイムアウトしたことを示します。

スクリプト タスク

次の表では、スクリプト タスクのカスタム ログ エントリを説明します。

ログ エントリ 説明
ScriptTaskLogEntry スクリプト内でのログ記録の実装結果を報告します。 ログ エントリは、 Dts オブジェクトの Log メソッドを呼び出すたびに書き込まれます。 このエントリは、コードの実行時に書き込まれます。 詳細については、「 スクリプト タスクでのログ記録」を参照してください。

メール送信タスク

次の表は、メール送信タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
SendMailTaskBegin タスクが電子メール メッセージの送信を開始したことを示します。
SendMailTaskEnd タスクが電子メール メッセージの送信を終了したことを示します。
SendMailTaskInfo タスクに関する説明情報を提供します。

データベース転送タスク

次の表は、データベース転送タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
SourceDB タスクでコピーされたデータベースを示します。
SourceSQLServer データベースのコピー元のコンピューターを示します。

エラー メッセージ転送タスク

次の表は、エラー メッセージ転送タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
TransferErrorMessagesTaskFinishedTransferringObjects タスクがエラー メッセージの転送を終了したことを示します。
TransferErrorMessagesTaskStartTransferringObjects タスクがエラー メッセージの転送を開始したことを示します。

ジョブ転送タスク

次の表は、ジョブ転送タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
TransferJobsTaskFinishedTransferringObjects タスクが SQL Server エージェント ジョブの転送を終了したことを示します。
TransferJobsTaskStartTransferringObjects タスクが SQL Server エージェント ジョブの転送を開始したことを示します。

ログイン転送タスク

次の表は、ログイン転送タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
TransferLoginsTaskFinishedTransferringObjects タスクがログインの転送を終了したことを示します。
TransferLoginsTaskStartTransferringObjects タスクがログインの転送を開始したことを示します。

Master ストアド プロシージャ転送タスク

次の表は、Master ストアド プロシージャ転送タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
TransferStoredProceduresTaskFinishedTransferringObjects master データベースに格納されている、ユーザー定義ストアド プロシージャの転送をタスクが完了したことを示します。
TransferStoredProceduresTaskStartTransferringObjects master データベースに格納されている、ユーザー定義ストアド プロシージャの転送をタスクが開始したことを示します。

SQL Server オブジェクトの転送タスク

次の表は、 SQL Server オブジェクトの転送タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
TransferSqlServerObjectsTaskFinishedTransferringObjects タスクが SQL Server データベース オブジェクトの転送を終了したことを示します。
TransferSqlServerObjectsTaskStartTransferringObjects タスクが SQL Server データベース オブジェクトの転送を開始したことを示します。

Web サービス タスク

次の表は、Web サービス タスクに対して有効にできるカスタム ログ エントリの一覧です。

ログ エントリ 説明
WSTaskBegin タスクが Web サービスへのアクセスを開始しました。
WSTaskEnd タスクが Web サービス メソッドを完了しました。
WSTaskInfo タスクに関する説明情報を提供します。

WMI データ リーダー タスク

次の表は、WMI データ リーダー タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
WMIDataReaderGettingWMIData タスクが WMI データの読み取りを開始したことを示します。
WMIDataReaderOperation タスクで実行された WQL クエリを報告します。

WMI イベント監視タスク

次の表は、WMI イベント監視タスクのカスタム ログ エントリの一覧です。

ログ エントリ 説明
WMIEventWatcherEventOccurred タスクが監視しているイベントが発生したことを示します。
WMIEventWatcherTimedout タスクがタイムアウトしたことを示します。
WMIEventWatcherWatchingForWMIEvents タスクが WQL クエリの実行を開始したことを示します。 このエントリには、クエリが含まれています。

XML タスク

次の表では、XML タスクのカスタム ログ エントリを説明します。

ログ エントリ 説明
XMLOperation タスクで実行される操作に関する情報を提供します。

次の一覧では、ログ記録機能に関連するタスクの実行方法を示すトピックへのリンクを示します。