プログラムによるログ記録の有効化
ランタイム エンジンでは、パッケージの検証中および実行中にイベント固有の情報のキャプチャを有効にするための 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
|