所以我的数据库中有 2 个触发器。它的目的是记录用户或第三方导入/导出所做的任何数据操作活动。它保存它的表有一个日期戳,显然标记了它的执行时间。出于某种原因,当此第三方 SSIS 包向其写入记录时,它会触发触发器(如预期的那样),但时间完全相同。一条记录用于插入记录,另一条记录用于更新记录。问题是日期戳在毫秒之前是完全相同的。
关于如何跟踪其原因的任何想法?我应该查看 SSIS 包吗?我认为这不会导致 2 个触发器。
谢谢你的时间!
所以我的数据库中有 2 个触发器。它的目的是记录用户或第三方导入/导出所做的任何数据操作活动。它保存它的表有一个日期戳,显然标记了它的执行时间。出于某种原因,当此第三方 SSIS 包向其写入记录时,它会触发触发器(如预期的那样),但时间完全相同。一条记录用于插入记录,另一条记录用于更新记录。问题是日期戳在毫秒之前是完全相同的。
关于如何跟踪其原因的任何想法?我应该查看 SSIS 包吗?我认为这不会导致 2 个触发器。
谢谢你的时间!
尝试使用 SQL 探查器查看正在调用的内容。但我怀疑是SSIS。
在 SQL Server 中,DATETIME 数据类型的分辨率为 3 毫秒。虽然这听起来很短,但足以在现代 CPU 上执行数千条指令。因此,如果插入后直接进行更新,则它们很有可能以相同的 DATETIME 值结束。
您可以通过使用 DATETIME2 数据类型和 SYSDATETIME() 函数来将分辨率提高到 100 纳秒。但即便如此,您最终可能会得到重复的值。
获取执行顺序的最简单方法是在日志表中添加一个 IDENTITY 列。从它不断增加的价值中,您可以直接辨别订单。