2011-04-11 35 views
1

我正在尝试在两个链接的服务器上编写查询。已经设立具有适当的登录链接,我得到这个整理错误:如何在T-SQL中正确构造collat​​e命令?

Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.

这是新的给我,但它看起来像一个字符集冲突,所以我用Google搜索,并发现了分页打印指令从而可以被添加到我的加入。但是我都试过

va ON V_ID1 = c1.strData COLLATE Latin1_General_CI_AS 

va ON V_ID1 = c1.strData COLLATE SQL_Latin1_General_CP1_CI_AS 

而且,无论似乎解决错误。我究竟做错了什么?

编辑:整个查询太大张贴,并期望人们过滤通过,但这里的相关位:

select 
     rel.intParentAttributeId as intItemId, 
     case va.type 
     when 'SM' then 120000000 
     when 'FB' then 110000000 
     when 'RO' then 100000000 
     when 'SP' then 90000000 
     when 'A' then 80000000 
     when 'D' then 70000000 
     when 'P' then 60000000 
     when 'SR' then 50000000 
     when 'FN' then 40000000 
     when 'RL' then 30000000 
     when 'VO' then 20000000 
     when 'RE' then 10000000 
     end 
     + 

     rel.intParentAttributeId 
     as fltStrength 
     from 
     AttributeMap ky 

     join Catalogue c1 on c1.intRowId=ky.intChildAttributeId and [email protected] 

     join 

     [SQLSERVERNAME].[SchemaName].dbo.VidAssc 
     va on V_ID1 COLLATE SQL_Latin1_General_CP1_CI_AS = c1.strData COLLATE SQL_Latin1_General_CP1_CI_AS 


     join Catalogue c2 on c2.strData=V_ID2 and [email protected] 

     join AttributeMap rel on rel.intChildAttributeId = c2.intRowId 

     join @tmpSeeds s on s.intItemId = ky.intParentAttributeId 

     group by rel.intParentAttributeId,va.Type 

     )sqi 

干杯, 马特

+1

你能请张贴整个查询?那里可能有些东西你认为是理所当然的。 – 2011-04-11 16:30:40

回答

2

好的,终于找到了一个修复。以下是你需要做的:

在sql server管理器中找到Server Objects> Linked Servers>并找到有问题的链接服务器。

右键点击>属性

在服务器选项设置为“使用远程排序规则”为“False” 和“排序规则名称”为“Latin1_General_CI_AS”

2

尝试把COLLATE左侧以及:

FROM Table1 AS t1 
INNER JOIN Table2 AS t2 
ON t1.ID COLLATE Latin1_General_CI_AS 
    = t2.ID --COLLATE Latin1_General_CI_AS --optionally on the right if needed. 
+0

嗨。感谢您的帮助。尝试此操作会导致错误:无法解决等于操作中“SQL_Latin1_General_CP1_CI_AS”和“Latin1_General_CI_AS”之间的排序规则冲突。 – 2011-04-12 08:35:22