我遇到了这个错误,但我不知道如何修复它
无法解决“Arabic_CI_AS”和“Arabic_CI_AS”之间的排序规则冲突
等于操作中的“SQL_Latin1_General_CP1_CI_AS”。
注意:我已经从数据库选项更改了排序规则 --> 排序规则
我将其从“Arabic_CI_AS”更改为“SQL_Latin1_General_CP1_CI_AS”
我仍然遇到同样的错误!
有什么建议可以解决这个问题吗?
仅当您创建 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
or
SELECT *
FROM TBL1
WHERE X = Y COLLATE DATABASE_DEFAULT
etc
上面有一个脚本这个网站 http://www.db-staff.com/index.php/microsoft-sql-server/69-change-collation尝试更改整个数据库的排序规则,但是
- 我没有亲自尝试过
- 在尝试之前请确保您已对数据库进行了良好的备份
- 它看起来不会处理带有索引视图、外键/默认约束等的复杂数据库
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)