[問題描述]
數據庫A與數據庫B分別位於兩臺機器M1與M2上,確定兩個庫都使用了“SQL_Latin1_General_CP1_CI_AS”排序規則,這個可以從數據庫屬性中查詢得知。
現在數據庫B要使用A的數據,因此,我在B中建立了A的Link Server。
然後,數據庫B中的Table2與數據庫A中的Table1做join查詢,問題出現了。
查詢分析器中,報排序規則不一致的問題:“Cannot resolve collation conflict for equal to operation.”
查詢腳本:
select * from Table2 b join M1.A.dbo.Table1 a on b.Code=a.Code
[我的嘗試]
其實,我是想做一張統計報表,問題遠沒有這麼簡單,我是將其他的枝葉去掉了,然後將問題定位到這句話中。
1. 我確定了這個兩個的排序規則一致。
2. 確定這兩個表join的兩個字段,使用數據庫默認的排序規則,換句話說,規則也是一致的。
這就無法解釋了?難道是link server的問題?
[解決問題]
在一篇帖子中找到了一點靈感:
http://topic.csdn.net/u/20080429/14/791336f1-e198-4c5d-967b-dcb3d9caf389.html
上面有一段設置排序規則的語法:
我在上面的腳本中,指定了排序規則:
select * from Table2 b join M1.A.dbo.Table1 a on b.Code COLLATE SQL_Latin1_General_CP1_CI_AS =a.Code COLLATE SQL_Latin1_General_CP1_CI_AS
問題解決。