2016-04-15 44 views
1

在SQL Server 2008中,在向我的表table1插入一組記錄時,由於重複數據,我收到唯一的密鑰違規錯誤。這很好,但錯誤消息並未顯示哪些數據是重複的。但在SQL Server 2014中它也顯示重複的鍵值。在2014年UNIQUE KEY違規錯誤未顯示重複數據

消息2627

錯誤消息,級別14,狀態1,唯一鍵約束 'UK_table1' 的第2行衝突。無法在對象'dbo.table1'中插入重複鍵。 重複鍵值爲(xxx)。在2008年

消息2627

錯誤消息,級別14,狀態1,唯一鍵約束 'UK_table1' 的第2行衝突。無法在對象'dbo.table1'中插入重複鍵。

這是2014年的一項新功能,或者有什麼方法可以在SQL Server 2008中顯示它嗎?

注意: - 希望問題清楚,如果不是請評論。此外,如果這是2008+的一項新功能,那麼請添加有效的參考/鏈接,這

編輯

2008

2014

+1

請參閱我編輯的文章 - 從您自己的@@版本和@Ponmani中可以看出它是在SQL 2008 R2中引入的。 – strickt01

+0

@ strickt01,是的,你說得對,謝謝。還有,是否有可能在2008年編輯這個sysmessages來包含這個功能?想知道? –

+0

不幸的是,調用'RAISERROR'的內部代碼不會將必要的參數傳遞給該消息。你需要升級... – strickt01

回答

2

運行在兩臺服務器上執行以下操作:

select * from sysmessages sm where sm.error = 2627 

您應該看到該消息的模板是不同的。您使用的SQL Server 2008的確切版本是因爲它在2008 R2中絕對可用:

違反%ls約束'%。* ls'。無法在對象'%。* ls'中插入重複鍵。重複的鍵值是%ls。

在SQL服務器回首2005和數據庫雖然模板:%1!約束

違反 '%1!'。無法在對象'%。* ls'中插入重複鍵。

從看你@@version很顯然,這不是在SQL Server 2008 RTM提供,但來自@ Ponmani的@@version,該功能是通過SQL Server 2008 R2中添加。

3

Abdul,它似乎可用於SQL Server 2008本身。請找到截圖。

enter image description here

找到@@version

enter image description here

+0

10.0.1600.22是SQL 2008 RTM。所以它似乎從2008年起可用。你的版本號是什麼@Abdul Rasheed? – strickt01

+0

感謝您的回覆,附上我的問題截圖 –

+0

您可以在@Ponmani Chinnaswamy上運行@@版本嗎?您的客戶端工具絕對是SQL 2008 RTM,但服務器可能不是(或者是本地的?)... – strickt01