有没有办法自动捕获(在SQL服务器日志或窗口事件日志中)约束违规,因为插入到具有重复主键值的SQL服务器表?
for Ex:当我尝试在SQL Server Management Studio中插入重复的主键时,出现以下错误
Ms 2627,Level 14,State 1,Line 2 违反PRIMARY KEY约束'PK_ 客户 _A4AE64D87F60ED59'。无法在对象'dbo.Customer'中插入重复键。 声明已经终止。
但我无法在SQL Server日志或Windows事件日志中找到该消息。
由于
答案 0 :(得分:1)
SQL不会自动记录该信息。有很多方法可以做到这一点,但你必须自己进行设置/配置,而且没有一种方法可以很容易实现。
“最简单”的是使用SQL事件探查器,跟踪异常事件,并过滤相应的错误编号(或数字,可能有几个类似的跟踪异常)。如果您想要永久记录此信息,这可能会有问题。
可以使用SQL Agent Alert系统完成某些操作。我从来没有使用过这个,我似乎记得它要求将警报写入Windows事件日志,因此可能无法正常工作 - 但它仍然值得一试。
其他大多数事情都需要修改代码,陷阱和跟踪引发的错误。这可能非常尴尬,细节将取决于代码库的存在和范围。