捕获SQL Server 2008中的主键约束冲突

时间:2011-08-10 18:41:26

标签: sql-server-2008-r2

有没有办法自动捕获(在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事件日志中找到该消息。

由于

1 个答案:

答案 0 :(得分:1)

SQL不会自动记录该信息。有很多方法可以做到这一点,但你必须自己进行设置/配置,而且没有一种方法可以很容易实现。

“最简单”的是使用SQL事件探查器,跟踪异常事件,并过滤相应的错误编号(或数字,可能有几个类似的跟踪异常)。如果您想要永久记录此信息,这可能会有问题。

可以使用SQL Agent Alert系统完成某些操作。我从来没有使用过这个,我似乎记得它要求将警报写入Windows事件日志,因此可能无法正常工作 - 但它仍然值得一试。

其他大多数事情都需要修改代码,陷阱和跟踪引发的错误。这可能非常尴尬,细节将取决于代码库的存在和范围。