2011-08-10 68 views
1

有没有一种方法可以自动捕获(在SQL服务器日志或窗口事件日志中)由于插入到具有重复主键值的SQL服务器表而导致的约束冲突?在SQL Server 2008中捕获主键约束冲突

防爆:当我尝试插入在SQL Server Management Studio中重复的主键,我得到以下错误

消息2627,级别14,状态1,2号线 违反PRIMARY KEY约束“PK_ 客户 _A4AE64D87F60ED59'。无法在对象'dbo.Customer'中插入重复键。 该声明已被终止。

但我无法在SQL Server日志或Windows事件日志中找到该消息。

谢谢

回答

1

该信息不会被SQL自动记录。有很多方法可以做到这一点,但是您必须自己完成设置/配置,而且其中任何一个都不会很容易实现。

“最简单的”之一是使用SQL事件探查器,跟踪Exception事件,并筛选出适当的错误号(或数字,可能有几个类似的跟踪异常)。如果你想永久记录这些信息,这可能会有问题。

SQL Agent Alert系统可能会做某些事情。我从来没有使用过这个,而且我似乎记得它需要将警报写入Windows事件日志,所以它可能无法工作 - 但它仍值得期待。

大多数其他事情都需要修改代码,以捕获和跟踪引发的错误。这可能非常尴尬,细节取决于代码基础的性质和程度。