SSIS OnError EventHandler确实在表中创建了一个Entry,但Inserted Row不可见

时间:2012-05-06 11:33:55

标签: sql sql-server event-handling ssis

我正在构建一个SSIS包并尝试实现事件处理程序。

我希望每当完整进程中的任何地方发生错误时,应该在表中使用 System :: SourceName,System :: ErrorDescription,System :: 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]

我在Package级别创建了一个 OnError 事件处理程序。 使用的Sql查询是     INSERT INTO [ErrorLog]([ExecutionID],[SourceName],[Message],[MessageCode],
    [LogDateTime])VALUES(?,?,?,?,getdate())

我面临的问题是,无论何时,在包中的任何地方发生错误,事件处理程序确实变为绿色显示其调用,但数据库中的表不显示该条目。

但是,我确信每次发生错误时都会插入一行,因为每当我手动在该表中创建一个新行时,就会添加一个新行,并为列[LogID]添加下一个标识值。

例如,假设LogID列中的值为 74 ,并且包中发生错误,添加了NO行,当我在ErrorLog Table中手动插入记录时,插入的标识为 76 即可。

不确定出了什么问题。

我正处于这个问题,并且非常感谢任何帮助。

由于 莫希特

1 个答案:

答案 0 :(得分:1)

这看起来正在回滚插件。

您的包装上是否有交易控制权?

要测试我会在onerror上的组件上设置事务支持属性,并将触发错误的任务设置为NotSupported。它表示任务不会参与由程序包或任何其他父任务启动的任何事务。