プログラムによるログ記録の有効化
ランタイム エンジンでは、パッケージの検証中および実行中にイベント固有の情報のキャプチャを有効にするための LogProvider オブジェクトのコレクションが提供されます。 LogProvider オブジェクトは、DtsContainer オブジェクト群、つまり TaskHost、Package、ForLoop、ForEachLoop などの各オブジェクトで使用できます。 ログ記録は、個別のコンテナーでも、パッケージ全体でも有効にすることができます。
コンテナーで使用できるログ プロバイダーには、いくつかの種類があります。 そのため、さまざまな形式でログ情報を作成し、保存することができます。 コンテナー オブジェクトをログ記録に登録するには、まずログ記録を有効にし、次にログ プロバイダーを選択するという、2 段階の処理が必要です。 コンテナーの LoggingOptions プロパティおよび LoggingMode プロパティを使用して、ログ記録するイベントを指定し、ログ プロバイダーを選択します。
ログ記録の有効化
ログ記録を実行できる各コンテナーにある LoggingMode プロパティは、コンテナーのイベント情報をイベント ログに記録するかどうかを指定します。 このプロパティには DTSLoggingMode 構造の値が割り当てられ、既定でコンテナーの親オブジェクトから継承されます。 コンテナーがパッケージである、つまり親オブジェクトがない場合は、プロパティは UseParentSetting の値を使用します。既定値は Disabled です。
ログ プロバイダーの選択
LoggingMode プロパティを Enabled に設定したら、コンテナーの SelectedLogProviders コレクションにログ プロバイダーを追加し、処理を完了します。 LoggingOptions オブジェクトでは SelectedLogProviders コレクションが使用可能で、これにはコンテナーで選択されたログ プロバイダーが含まれています。 プロバイダーを作成し、コレクションに追加するには、Add メソッドを呼び出します。 このメソッドは、コレクションに追加されたログ プロバイダーを返します。 各プロバイダーには、そのプロバイダーに固有の設定があり、そのプロパティを設定するには ConfigString プロパティを使用します。
次の表に、使用可能なログ プロバイダー、説明、および ConfigString 情報を示します。
プロバイダー |
説明 |
ConfigString プロパティ |
---|---|---|
SQL Server Profiler |
SQL Server Profiler でキャプチャおよび表示される SQL トレースを生成します。 このプロバイダーで使用されるファイル名の既定の拡張子は、.trc です。 |
構成は必要ありません。 |
SQL Server |
イベント ログ エントリを SQL Server データベースの sysssislog テーブルに書き込みます。 |
SQL Server プロバイダーの場合は、データベースへの接続と対象データベースの名前を指定する必要があります。 |
テキスト ファイル |
イベント ログ エントリをコンマ区切り (CSV) 形式で ASCII テキスト ファイルに書き込みます。 このプロバイダーで使用されるファイル名の既定の拡張子は、.log です。 |
ファイル接続マネージャーの名前です。 |
Windows イベント ログ |
ローカル コンピューター上のアプリケーション ログの標準 Windows イベント ログにログを記録します。 |
構成は必要ありません。 |
XML ファイル |
イベント ログ エントリを XML 形式ファイルに書き込みます。 このプロバイダーで使用されるファイル名の既定の拡張子は、.xml です。 |
ファイル接続マネージャーの名前。 |
イベント ログにイベントを含めたり除外するには、コンテナーの EventFilterKind プロパティおよび EventFilter プロパティを設定します。 EventFilterKind 構造には ExclusionFilter および InclusionFilter の 2 つの値があります。これはそれぞれ、EventFilter に追加されたイベントが、イベント ログに含まれるかどうかを示します。 次に、フィルター選択の対象となるイベントの名前を含む文字配列を EventFilter プロパティに割り当てます。
次のコードは、パッケージのログ記録を有効にし、SelectedLogProviders コレクションにテキスト ファイルのログ プロバイダーを追加し、ログ出力に含めるイベントの一覧を指定します。
サンプル
using System;
using Microsoft.SqlServer.Dts.Runtime;
namespace Microsoft.SqlServer.Dts.Samples
{
class Program
{
static void Main(string[] args)
{
Package p = new Package();
ConnectionManager loggingConnection = p.Connections.Add("FILE");
loggingConnection.ConnectionString = @"C:\SSISPackageLog.txt";
LogProvider provider = p.LogProviders.Add("DTS.LogProviderTextFile.2");
provider.ConfigString = loggingConnection.Name;
p.LoggingOptions.SelectedLogProviders.Add(provider);
p.LoggingOptions.EventFilterKind = DTSEventFilterKind.Inclusion;
p.LoggingOptions.EventFilter = new String[] { "OnPreExecute",
"OnPostExecute", "OnError", "OnWarning", "OnInformation" };
p.LoggingMode = DTSLoggingMode.Enabled;
// Add tasks and other objects to the package.
}
}
}
Imports Microsoft.SqlServer.Dts.Runtime
Module Module1
Sub Main()
Dim p As Package = New Package()
Dim loggingConnection As ConnectionManager = p.Connections.Add("FILE")
loggingConnection.ConnectionString = "C:\SSISPackageLog.txt"
Dim provider As LogProvider = p.LogProviders.Add("DTS.LogProviderTextFile.2")
provider.ConfigString = loggingConnection.Name
p.LoggingOptions.SelectedLogProviders.Add(provider)
p.LoggingOptions.EventFilterKind = DTSEventFilterKind.Inclusion
p.LoggingOptions.EventFilter = New String() {"OnPreExecute", _
"OnPostExecute", "OnError", "OnWarning", "OnInformation"}
p.LoggingMode = DTSLoggingMode.Enabled
' Add tasks and other objects to the package.
End Sub
End Module
|