2012-05-06 22 views
1

SSISパッケージを構築してイベントハンドラを実装しようとしています。SSIS OnError EventHandlerはテーブルにエントリを作成しますが、挿入された行は表示されません。

私は、エラーが完全なプロセスのどこにでも発生するたびに、ログエントリがシステム:: sourcenameに、システム:: ErrorDescription、システム::のErrorCodeシステムを使用してテーブルになされるべきであることを望ん:: ExecutionInstanceGUID 。このため

以下に示すように、私はテーブルを作成しました:

CREATE TABLE [dbo].[ErrorLog]([LogID] [int] IDENTITY(1,1) NOT NULL, 
[ExecutionID] [nvarchar](255) NULL,[SourceName] [varchar](255) NOT NULL, 
[Message] [nvarchar](max) NOT NULL, 
[MessageCode] [int] NOT NULL, 
[LogDateTime] [datetime] NOT NULL 
) ON [PRIMARY] 

私はパッケージレベルでONERRORイベントハンドラを作成しました。 使用されるSQLクエリは です。INSERT INTO [ErrorLog](ExecutionID]、[SourceName]、[MessageCode]、
[LogDateTime])VALUES(?、?、?、?、getdate())

私が直面している問題は、パッケージのどこにでもエラーが発生した場合、イベントハンドラは緑色になり、呼び出しを示してもデータベース内のテーブルにエントリが表示されません。

しかし、手動でそのテーブルに新しい行を作成するたびに新しい行が列[LogID]の次のID値で追加されるたびにエラーが発生するたびに行が挿入されることを確信しています。例について

、LOGID列の値は、であり、エラーがパッケージ内に発生し、NO行が加えられていない取得し、私はのErrorLog表手動でレコードを挿入する際に挿入アイデンティティがある。仮定

何が問題なのかよく分かりません。

私はこの修正プログラムに含まれており、本当に助けに感謝します。これは、挿入のように見える

おかげ Mohit

+0

私はあなたが挿入ステートメントの?sを引用符で囲む必要があると思います: '?'。 –

答えて

1

はロールバックされています。

あなたのパッケージにトランザクションコントロールがありますか?

テストするには、onerrorのコンポーネントでトランザクションサポートプロパティを設定し、エラーをトリガしたタスクをNotSupportedに設定します。これは、タスクがパッケージまたは他の親タスクによって開始されたトランザクションに参加しないことを示します。

+0

はいトランザクションにあります.Floloopコンテナに含まれているロギングをチェックするのに失敗しているFileSystemタスクです。このForLoopコンテナは、トランザクションと1つのソースSqlタスクによってトランザクション内でバインドされます。コミットのタスク1とロールバックのタスク。 File System TaskとForLoop ContainerのTransactionプロパティを両方ともサポートするように設定しました – CuriousBuddy

+1

なぜサポートに設定しましたか? NotSupportedに設定する – Diego

関連する問題