因此,我試圖做一些非常簡單的事情;修改一個表並添加一個外鍵約束。問題是它給我一個錯誤,關於列的排序規則不匹配:排序規則問題MSSQL
列外號與在外鍵等級中引用列外差的排序規則不同。
我不明白這一點,我已經到處尋找。當我查看SQL屬性頁面時,它顯示相同的排序規則(Latin1_General_CI_AS)。我到處尋找,我不知道如何改變這一點。任何人誰可以幫助,將不勝感激。謝謝!
因此,我試圖做一些非常簡單的事情;修改一個表並添加一個外鍵約束。問題是它給我一個錯誤,關於列的排序規則不匹配:排序規則問題MSSQL
列外號與在外鍵等級中引用列外差的排序規則不同。
我不明白這一點,我已經到處尋找。當我查看SQL屬性頁面時,它顯示相同的排序規則(Latin1_General_CI_AS)。我到處尋找,我不知道如何改變這一點。任何人誰可以幫助,將不勝感激。謝謝!
當試圖比較在SQL Server中兩個字符串的排序規則必須匹配,否則,你得到這個錯誤。整理通知SQL Server如何比較字符串(即CHAR,NCHAR,VARCHAR,NVARCHAR)。排序規則Latin1_General_CI_AS使用Latin1_General字符集,不區分大小寫,區分重音。
一些東西,你需要知道之前我給你的解決方案:有三個級別的排序規則的SQL Server中:
爲了解決您的問題,您需要更改你要比較兩個領域之一的整理,使他們一樣。同時更改到數據庫的排序規則匹配可能會是你最好的做法:
ALTER TABLE MyMaster ALTER COLUMN MyMasterKey VARCHAR(30) COLLATE LATIN1_General_CI_AS
ALTER TABLE MyDetail ALTER COLUMN MyMasterKey VARCHAR(30) COLLATE LATIN1_General_CI_AS
然後你就可以定義外鍵:
ALTER TABLE MyDetail ADD CONSTRAINT FK_Master_Detail FOREIGN KEY (MyMasterKey) REFERENCES MyMaster(MyMasterKey)
看起來好像兩個表或兩個字段(外鍵 - 主鍵)具有不同的排序規則。你能給我們更多的信息嗎?
參見如何檢查覈對這個帖子:SQL Authority Blogpost
好我正在使用SQL Server 2008 R2,並且我只需在對象資源管理器中右鍵單擊它並查看擴展屬性,它將兩個排序規則顯示爲Latin1_General_CI_AS ... – Jack
請張貼的DDL兩個表 –