我正在构建一个SSIS包并尝试实现事件处理程序。
我希望每当整个过程中的任何地方发生错误时,都应该在表中创建一个日志条目,其中包含系统::源名称、系统::错误描述、系统::错误代码和系统::执行实例 GUID。
为此,我创建了一个表格,如下所示:
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 查询是 插入到 [错误日志]([执行 ID],[源名称],[消息],[消息代码],
[日志日期时间](值(?,?,?,?,获取日期(((
我面临的问题是,每当事件处理程序在包中的任何位置发生错误时,都会变为绿色,显示其调用,但数据库中的表不显示该条目。
但是,我确信每次发生错误时都会插入一行,因为每当我手动在该表中创建新行时,都会添加一个新行,其中包含列 [LogID] 的下一个标识值。
例如,假设 LogID 列中的值为 74 并且包中发生错误,则不会添加任何行,当我在错误日志表中手动插入记录时,插入的标识为 76。
不知道出了什么问题。
我正在此修复程序中,非常感谢任何帮助。
谢谢莫希特
这看起来像是插入正在回滚。
您对包裹有事务控制吗?
为了进行测试,我会在组件上设置事务支持属性,甚至将触发错误的任务设置为 NotSupported。它指示任务不会参与由包或任何其他父任务发起的任何事务。