SSMS显示2008年和2014年关于违反UNIQUE KEY约束的差异错误消息



SQL Server 2008实例中将记录插入表table1时,我得到以下错误

消息2627,级别14,状态1,第1行
违反了UNIQUE KEY约束"IX_table1"。无法在对象"dbo.table1"中插入重复的密钥。

但是,当在SQL Server 2014(上面数据库的副本)中执行相同的查询时,我在的错误消息中得到了一些不同

消息2627,级别14,状态1,第2行
违反了UNIQUE KEY约束"IX_table1"。无法在对象"dbo.table1"中插入重复的键。
重复的键值为(xxx,)。

2014中,错误消息指定消息中的重复值(The duplicate key value is xxx),但在<strong]2008中则不指定。>

为什么这样?这是2014年的新功能吗?或者有任何设置可以更改/格式化错误消息?

当PK冲突发生时,用户强烈要求显示导致冲突的值。当冲突发生在插入一行的简单INSERT语句中时,很容易就会发生,因为插入了值。但是INSERT也可以插入一个集合,例如INSERT INTO ... SELECT ... FROM...,然后很难找出集合中哪个行导致了冲突。

在SQL Server 2014中,对捕获导致冲突的重复密钥并将其显示在错误消息中进行了改进。

最新更新