我正在构建一个 SSIS 包并尝试实现事件处理程序。
我希望每当在整个过程中的任何地方发生错误时,都应该在具有System::SourceName、System::ErrorDescription 、 System::ErrorCode和System::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],[Message],[MessageCode],
[LogDateTime]) VALUES(?,?,?,?,getdate())
我面临的问题是,每当事件处理程序所做的包中的任何地方发生错误时,都会变为绿色,显示其调用,但数据库中的表不显示条目。
但是,我确信每次发生错误时都会插入一行,因为每当我在该表中手动创建新行时,都会添加一个新行,其中包含列 [LogID] 的下一个标识值。
例如,假设 LogID 列中的值为74并且包中发生错误,未添加任何行,并且当我在 ErrorLog 表中手动插入记录时,插入的标识为76。
不知道出了什么问题。
我在这个修复中,非常感谢任何帮助。
谢谢莫希特