問題描述
今天在做數據庫遷移,然后新建link server(鏈接服務器)的時候,碰到以下問題。
我的sql 腳本是這樣的。

然后,執行的時候就收到以下錯誤信息。
Msg 468, Level 16, State 9, Line 7
Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.
原因分析
依據錯誤提示信息,很容易就可以發現,是因為當前DB的排序規則與鏈接服務器對應的DB的排序規則不一致導致的。
但是,確認當前DB的排序規則與鏈接服務器對的DB的排序規則是完全一樣的,都是SQL_Latin1_General_CP1_CI_AS。
解決辦法
當然,我這里的解決辦法只是一個替代的解決方案。
由於前面我是通過UI操作去創建的,那么我換一種方案,使用sql腳本(可以找一個正常的link server右鍵導出腳本然后修改)來創建,結果一切正常。

創建link server的腳本:
/****** Object: LinkedServer [xxx] Script Date: 09/10/2015 17:25:22 ******/ IF EXISTS (SELECT srv.name FROM sys.servers srv WHERE srv.server_id != 0 AND srv.name = N'xxx')EXEC master.dbo.sp_dropserver @server=N'xxx', @droplogins='droplogins' GO /****** Object: LinkedServer [xxx] Script Date: 09/10/2015 17:25:22 ******/ EXEC master.dbo.sp_addlinkedserver @server = N'xxx', @srvproduct=N'xxx', @provider=N'SQLNCLI10', @datasrc=N'xxx\DEV' /* For security reasons the linked server remote logins password is changed with ######## */ EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'xxx',@useself=N'False',@locallogin=NULL,@rmtuser=N'sa',@rmtpassword='xxx.xxx.dev' GO
