无法解决整理冲突?

时间:2011-03-17 07:55:38

标签: asp.net sql-server

我遇到了这个错误,我不知道如何修复它

  

无法解决“Arabic_CI_AS”与之间的排序规则冲突   “SQL_Latin1_General_CP1_CI_AS”中的等于操作。

注意:我已经从数据库选项中更改了排序规则 - >整理

我将它从“Arabic_CI_AS”更改为“SQL_Latin1_General_CP1_CI_AS”

我仍然得到同样的错误!!
有什么建议可以解决这个问题吗?

1 个答案:

答案 0 :(得分:5)

只有在未指定排序规则的情况下创建NEW对象时,才应用数据库排序规则。

当您将其从“Arabic_CI_AS”更改为“SQL_Latin1_General_CP1_CI_AS”时,数据库中的所有文本列仍会进行整理Arabic_CI_AS。您可以使用

进行检查
select object_name(object_id), name, collation_name
from sys.columns
where collation_name like '%Arabic%'

此问题的补丁是将COLLATE DATABASE_DEFAULT置于比较之下,例如

SELECT *
FROM TBL1
INNER JOIN TBL2 on X = Y COLLATE DATABASE_DEFAULT

SELECT *
FROM TBL1
WHERE X = Y COLLATE DATABASE_DEFAULT

this site上有一个脚本尝试更改整个数据库的排序规则,但

  1. 我没有亲自尝试过
  2. 在尝试之前确保您拥有良好的数据库备份
  3. 看起来它不会处理具有索引视图,外键/默认约束等的复杂数据库