sql server排序規則沖突


問題1:

  

 

解決:

  數據庫的排序規則不同,a表為臨時表,用的是tempdb的排序規則,tempdb一般用的實例默認的排序規則。

  而 b表用的是db_tank的排序規則,所以在兩個表做字段匹配、計算等操作時會報錯排序規則沖突。

set @mdf=(SELECT dsize/1024 FROM #tf_driver a,db_tank..sysfiles b WHERE b.name='Db_Tank_Data' and a.driver COLLATE chinese_prc_ci_as =LEFT(b.FILENAME,1))
set @ldf=(SELECT dsize/1024 FROM #tf_driver a,db_tank..sysfiles b WHERE b.name='Db_Tank_Log' and a.driver COLLATE chinese_prc_ci_as =LEFT(b.FILENAME,1))

 

 

問題2:

  兩個不同版本的sql server ,本地的是2005,鏈接服務器的是2008R2,排序規則不一致,無法直接比較連接

   

解決:見最后一行

select t1.name,t1.system_type_id,t1.user_type_id,t1.max_length,t2.* from (
select * from test2.sys.columns where object_id=object_id('Sys_Users_History')
) t1 join (
select t2.name tab_name,t1.name,t1.system_type_id,t1.user_type_id,t1.max_length
from [10.1.4.234].db_tank.sys.columns t1 
join [10.1.4.234].db_tank.dbo.sysobjects t2  on t1.object_id=t2.id and t2.name = 'Sys_Users_History'
) t2 on t1.name=  t2.name collate Chinese_PRC_90_CI_AI

 

參考文章:

  修改sql server實例、數據庫、表、字段的排序規則

  (3.6)常用知識-字符編碼與排序規則


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM