asp.net - 无法解决排序规则冲突?

标签 asp.net sql-server

我有这个错误,我不知道如何解决它

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



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

我将其从“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

或者
SELECT *
FROM TBL1
WHERE X = Y COLLATE DATABASE_DEFAULT

等等

this site上有脚本试图更改整个数据库的排序规则,但是
  • 我没有亲自试过
  • 在尝试之前,请确保您对数据库进行了良好的备份
  • 看起来它不会处理带有索引 View 、外键/默认约束等的复杂数据库
  • 关于asp.net - 无法解决排序规则冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5336328/

    相关文章:

    sql-server - 在 'LIKE' 运算符(operator)需要选择 'NULL' (DB) 值

    c# - 基于其他表单输入和验证显示/隐藏表单元素的最佳方法?

    c# - Visual Studio 2013 和 ASP.NET MVC 的困难

    asp.net - 我应该在哪里放置脚本管理器

    asp.net - 如何在 IIS 中发布 Blazor ASP.NET 应用程序?

    c# - 如何强制 Asp.net 开发服务器作为 32 位进程运行?

    sql - 查询仅返回具有有效电子邮件的行并仅输出电子邮件

    sql-server - 当我使用日期类型变量而不是硬编码日期时,为什么会出现 "Operand type clash: date is incompatible with int"错误?

    sql-server - 位列的唯一约束仅允许 1 个真 (1) 值

    sql - 在 SQL Server 中使用字符串转换按条件排序