1

SSISパッケージでファイルロギングを有効にしました。ログファイル接続文字列に対して、次の式を使用して次の形式のログファイルを生成しています。housekeepinglog2013_01_31_12_07.xml

@[User::VAR_LOG_PATH] +"\\housekeepinglog" + 
(DATEDIFF( "dd", @[System::StartTime], GETDATE() ) < 1 ?
(DT_STR,4,1252)DATEPART( "yyyy" , @[System::StartTime]) +  "_" +
RIGHT("0" + (DT_STR,4,1252)DATEPART("mm", @[System::StartTime]), 2) + "_" +
RIGHT("0" + (DT_STR,4,1252)DATEPART("dd", @[System::StartTime]), 2) +  "_" +
RIGHT("0" + (DT_STR,4,1252)DATEPART("hh", @[System::StartTime]), 2) +  "_" +
RIGHT("0" + (DT_STR,4,1252)DATEPART("mi", @[System::StartTime]), 2) +  "_" +
RIGHT("0" + (DT_STR,4,1252)DATEPART("ss", @[System::StartTime]), 2)
: "") 
+ ".xml"

問題は、1つのログファイルを作成する代わりに2つ取得することです。1つは正しい日付で完了し、もう1つはパッケージ検証に関するログ情報のみを含みますが、日付は約1日前です。パッケージが開始されるとStartTimeSystem変数が設定されるようですが、これは検証後に行われ、検証によってログエントリが作成されます。この前のStartDate変数は、パッケージの編集時に作成された任意の日付を保持します。

ちょっとした苛立ちですが、2番目のログファイルを抑制するための不格好な方法を誰かが知っているかどうか疑問に思いました。

4

1 に答える 1

0

「古い」見た目のログにもPackageStartイベントがあると思いますよね?ここに表示されているのは、多くの試みにいくらか関連しており、パッケージを変更せずにパッケージへのログオンを動的に有効/無効にすることです。彼らが遭遇する課題は、ベースのdtexec.exeがパッケージを検証し、式が検証され始める場所に入る前にすべてのことを検証することです。

頭に浮かぶ2つのオプションは、コマンドラインから接続文字列の値を提供することです。何かのようなものdtexec /file .\mypackage.dtsx /set \Package.Connections[XmlLogCM].Properties[ConnectionString];\"c:\housekeepinglog_SomeDosSyntaxForDateTime.xml\"

2つ目は、パッケージを別の方法で開始することです。Microsoft.SqlServer.Dts.Runtimeを使用してカスタム.NETコードを使用するか、 DTLoggedExecをダウンロードして使用します。

于 2013-01-31T14:03:28.190 に答える