1

SSIS のログ モード プロパティにバグはありますか?

タスクは親コンテナーからログ モードを継承する必要があることは理解していますが、コンテナーを logging mode = で設定し、コンテナーDisabled内のタスクを logging mode として設定Enabledすると、コンテナーがアクションをログに記録せず、タスクがログを記録することが期待されます。ネストされたコンポーネントによるログ テーブルの重複を避けるために、これを行います。

コンテナーのログ モードを無効に設定すると、ログ モードが有効に設定されていても、コンテナーに属するすべてのタスクで無効になっているように見えます。

私が期待している動作をほぼ確認するこのテキストを見つけましたが、それは起こっていることではありません.

問題について何か考えはありますか?

ログ記録は、SSIS オブジェクト階層のさまざまなレベル (パッケージ レベル、コンテナー レベル、およびタスク レベル) で構成できます。どのイベント プロパティをどの SSIS オブジェクトでキャプチャする必要があるかを判断するときは、SSIS オブジェクト階層が継承をサポートしていることに注意してください。タスクは独自のログ設定を使用するか、親オブジェクト (コンテナーまたはパッケージ) からそれらを継承できます。SSIS オブジェクト階層の特定のブランチを、同じイベントと同じプロパティ セットをログに記録するように構成する必要がある場合は、ブランチ全体をコンテナーに配置して、すべての SSIS オブジェクトを構成する必要がないようにすることができます。コンテナでロギングが構成された後、継承が有効になっている限り、コンテナに含まれる他のオブジェクトは同じ設定を使用します。特定の SSIS オブジェクトの LoggingMode プロパティが UseParentSetting (既定値) に設定されている場合、ログ設定は SSIS 階層の親 (オブジェクトがコンテナーに配置されている場合はコンテナー、またはパッケージ自体) から継承されます。オブジェクトがパッケージのスコープに存在する場合)。もちろん、親は、直接または継承を介してログを記録するように構成する必要があります。

一方、特定のタスクのログをその親とは異なる方法で構成するには、LoggingMode プロパティを Enabled に設定し、タスクを個別に構成する必要があります。タスクがそのイベントをログに記録しないようにするには、LoggingMode プロパティを Disabled に設定します。

4

1 に答える 1

3

LoggingModeプロパティが に設定されている親コンテナ内の子タスクを個別に構成する必要がありますDisabled

ロギングを説明するために SSIS 2012 で作成されたサンプル パッケージ:

これは、質問で説明したシナリオでログを構成する方法を示すサンプル SSIS パッケージです。以下で説明するようにパッケージを構成しました。

  • SSIS パッケージを作成し、次のように名前を付けます。SO_14982991.dtsx

  • SQL Server データベースにログを記録する場合は、ログを構成するデータベースにOLEDB 接続マネージャーを作成します。この例では、 という名前の接続マネージャーを使用していますOLEDB_PracticeDB

  • Sequence Containerを [データ フロー] タブにドラッグ アンド ドロップします。単純に名前を変更しますContainer

  • Sequence ContainerData Flow Task内に をドラッグ アンド ドロップします。に名前を変更します。Task within container

  • 別のものをドラッグ アンド ドロップして、シーケンス コンテナData Flow Taskの下に配置します。に名前を変更します。Independent task

  • シーケンス コンテナーのLoggingModeプロパティをUseParentSettingからに変更します。Disabled

  • という名前のデータ フロー タスクLoggingMode プロパティをUseParentSettingからに変更します。Task within containerEnabled

サンプルパッケージ

  • ログを有効にするには、[SSIS] メニューをクリックし、[ログ...] をクリックします。

で次の手順を実行します。Configure SSIS Log: SO_14982991

  • プロバイダーSSIS log provider for SQL Serverの種類から選択

  • 名前列の下のチェックボックスをオンにします

  • 接続マネージャーを選択するOLEDB_PracticeDB

ロギング 1

次のアクションを実行して、子アクションを有効にし、親アクションを無効にします。

  • という名前の親コンテナのチェックボックスをオフにしますContainer

  • という名前の子タスクに対してボックスをオンにしますTask within container

  • 次に、子タスクを選択し、Providers and Logsタブの [名前] 列の下にあるチェック ボックスをオンにする必要があります。

  • タブにログオンする適切なイベントを選択しDetailsます。

  • [OK] をクリックします。

ロギング 2

パッケージを実行する前に、ログ データベースに対して次のクエリを実行して、レコードを検出しません。

select id, event, source, starttime, endtime from dbo.sysssislog

実行前

パッケージを実行し、クエリを再度実行して、次のレコードを見つけました。

  • OnInformation子タスクのイベントはキャプチャされていますTask within containerが、親コンテナーのイベントはキャプチャされていないことがわかります。

実行後

ログが無効になっている親コンテナー内の子タスクのみをログに記録することについての質問に答えるのに役立つことを願っています。

于 2013-02-20T15:42:48.377 に答える