【发布时间】:2012-07-12 08:02:04
【问题描述】:
我在我的连接管理器中使用 RetainSameConnection=true,因为我正在使用事务(如果成功/失败,最后是 BEGIN TRANSACTION、COMMIT 或 ROLLBACK)。
我还使用默认的 SQL Server 日志记录提供程序并选择了 OnError 事件(以及其他事件)。
问题是我看不到 sysssislog 表中记录的 OnError 事件(该表存在并且创建了默认插入 SP) - 我可以看到记录的其他类型的事件。
使用 SQL 分析器,我可以检查 sp_ssis_addlogentry 是否已执行:
exec sp_executesql N'exec sp_ssis_addlogentry @P1,@P2,@P3,@P4,@P5, @P6,@P7,@P8,@P9,@P10,@P11',N'@P1 nvarchar(4000),@P2 nvarchar(4000),@P3 nvarchar(4000),@P4 nvarchar(4000),@P5 唯一标识符,@P6 唯一标识符,@P7 datetime2(7),@P8 datetime2(7),@P9 int,@P10 varbinary(8000),@P11 nvarchar(4000)', N'OnError',N'EWOIU027013096',N'ad\oiu099',N'Empty AF SINtemp','4CCEB32F-E884-483C-A02F-56D5C8438E44', '15F585B3-AC6C-476F-8A2E-FC926438AC84','2012-07-12 14:46:15','2012-07-12 14:46:15',0,0x, N'违反主键 约束“CIRNAGF0p0_AF”。不能插入重复 键入对象 ''dbo.TIRNAGF0_AF''。'
但是没有插入 OnError 事件。
当我将 RetainSameConnection 属性更改为 false 时,它可以工作,但是我不能依赖我的事务 SQL 任务。
注意:我什至尝试使用 RetainSameConnection=false 创建另一个专门用于日志记录的连接管理器,但没有成功。
我可以毫无问题地记录到文本文件,但我们需要记录到表中。
提前致谢
【问题讨论】:
-
但是您的分析器确实显示 N'OnError is getting inserted 。它是否显示为另一种情况??
-
正在回滚,请尝试使用单独的连接管理器进行日志记录
-
@praveen 我可以独立于 RetainSameConnection 值查看每种类型事件的 exec sp_executesql。
-
@msmucker0527 我已经尝试了一个单独的连接管理器来记录日志(尝试使用相同的连接字符串和一个单独的连接字符串)但没有成功;我也认为它正在回滚,但为什么其他事件类型被正确插入(PackageStart/End 和 OnPostExecute 的 Rollback 和容器)?我可以更改我的 sp_ssis_addlogentry 以打开另一个事务吗?
-
@AndreAlbuquerque 我能够成功回滚事务并使用单独的连接保留日志。主连接的 RetainSameConnection 设置为 true,而日志连接设置为 false,再试一次
标签: sql-server logging ssis onerror