简体   繁体   English

排序规则冲突SQL Server 2008

[英]Collation conflict SQL Server 2008

I've been going around this but I haven't found a solution for my problem. 我一直在解决这个问题,但是还没有找到解决我问题的方法。 My sql query is: 我的SQL查询是:

SELECT 
   dbo.Country.CtyRecID, dbo.Country.CtyShort, dbo.Notification.NotRecID,
   dbo.Notification.NotName, dbo.TemporalSuspension.TCtsCode, 
   dbo.TemporalSuspension.TCtsCodeRecID,
   dbo.TaxPhylum.PhyName AS Taxon, dbo.TemporalSuspension.TCtsNotes, 
   dbo.TemporalSuspension.TCtsRecID,
   dbo.TemporalSuspension.TCtsKgmRecID, 
   CASE dbo.TemporalSuspension.TCtsKgmRecID WHEN 1 THEN 'Animals'
         WHEN 2 THEN 'Plants' ELSE 'All' END AS Kingdom
FROM  
   dbo.TemporalSuspension 
INNER JOIN dbo.Notification 
   ON dbo.TemporalSuspension.TCtsStartNotRecID = dbo.Notification.NotRecID 
INNER JOIN dbo.Country 
   ON dbo.TemporalSuspension.TCtsCtyRecID = dbo.Country.CtyRecID 
INNER JOIN dbo.TaxPhylum 
   ON dbo.TemporalSuspension.TCtsCodeRecID = dbo.TaxPhylum.PhyRecID 
      AND dbo.TemporalSuspension.TCtsCode LIKE 'PHY'

UNION ALL

SELECT 
    dbo.Country.CtyRecID, dbo.Country.CtyShort, dbo.Notification.NotRecID, 
    dbo.Notification.NotName, dbo.TemporalSuspension.TCtsCode, 
    dbo.TemporalSuspension.TCtsCodeRecID, 
    dbo.TaxClass.ClaName AS Taxon, dbo.TemporalSuspension.TCtsNotes, 
    dbo.TemporalSuspension.TCtsRecID, 
    dbo.TemporalSuspension.TCtsKgmRecID, 
    CASE dbo.TemporalSuspension.TCtsKgmRecID WHEN 1 THEN 'Animals' 
        WHEN 2 THEN 'Plants' ELSE 'All' END AS Kingdom
FROM  
   dbo.TemporalSuspension 
INNER JOIN dbo.Notification 
   ON dbo.TemporalSuspension.TCtsStartNotRecID = dbo.Notification.NotRecID 
INNER JOIN dbo.Country 
   ON dbo.TemporalSuspension.TCtsCtyRecID = dbo.Country.CtyRecID 
INNER JOIN dbo.TaxClass 
   ON dbo.TemporalSuspension.TCtsCodeRecID = dbo.TaxClass.ClaRecID 
      AND dbo.TemporalSuspension.TCtsCode LIKE 'CLA'

But I don't understand why it doesn't work, I keep getting this error : 但是我不明白为什么它不起作用,我不断收到这个错误:

Cannot resolve collation conflict for column 7 in SELECT statement. 无法解决SELECT语句中第7列的排序规则冲突。

What's wrong? 怎么了? I've used this other times and I never got this problem. 我已经用过几次了,但是我从来没有遇到过这个问题。 According to the error the dbo.TaxPhylum.PhyName AS Taxon, and dbo.TaxClass.ClaName AS Taxon, is the thing giving the problem, but I don't really understand why, both columns have the same type and everything. 根据错误,出问题的原因是dbo.TaxPhylum.PhyName AS Taxon和dbo.TaxClass.ClaName AS Taxon,但是我不太明白为什么,这两列具有相同的类型和所有内容。

EDIT: This is the result obtained with the query, how do I get around this? 编辑:这是通过查询获得的结果,我该如何解决?

Column Name Table Name  collation_name
PhyName vDecisionsExpanded  Latin1_General_CI_AS
ClaName vDecisionsExpanded  SQL_Latin1_General_CP1_CI_AS

thanks 谢谢

Try this query in your database: 在您的数据库中尝试以下查询:

SELECT 
    col.name 'Column Name',
    OBJECT_NAME(object_id) 'Table Name',
    col.collation_name 
FROM sys.columns col
WHERE col.system_type_id IN (35, 99, 167, 175, 231, 239) -- TEXT, NTEXT, VARCHAR etc.

It will show you all string-related columns in your database, and their collation. 它将显示数据库中所有与字符串相关的列,以及它们的排序规则。

The error message says that column 7 is the culprit - that would be dbo.TaxPhylum.PhyName - so also check the TaxPhylum database. 错误消息指出第7列是元凶-可能是dbo.TaxPhylum.PhyName因此还要检查TaxPhylum数据库。 Is the collation in that database different from your normal database?? 该数据库中的排序规则与普通数据库不同吗?

UPDATE: if you have a collation conflict, you can do two things: 更新:如果您存在排序规则冲突,则可以做两件事:

1) if it's only a single or a few columns in a SELECT, just add the COLLATE ..... modifier to them: 1)如果SELECT中只有一列或几列,则只需向其添加COLLATE .....修饰符即可:

SELECT 
   .....
   dbo.TaxPhylum.PhyName COLLATE SQL_Latin1_General_CP1_CI_AS AS Taxon, 
   .....

2) if it's a lot of columns, you might want to consider to modify the COLLATION on those columns / tables or in that database all together 2)如果列很多,您可能要考虑修改这些列/表或数据库中的COLLATION

Different server/database combination? 不同的服务器/数据库组合? At the risk of asking the obvious, I assume that you have verified your columns collation sequences? 冒着问明显的风险,我假设您已经验证了您的列排序规则序列?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM