sqlserver中排序规则冲突问题的解决

使用sqlserver时,不小心出现:

无法解决 XXX 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_CS_AI" 之间的排序规则冲突

也可能是其他排序规则间的冲突,

保证数据库、表、列排序规则一致,则不会出现此问题,

在navicat中新建查询,在查询页面按如下命令操作可解决:

  1. 查看数据库排序规则(数据库名-对应排序规则)。

select name,collation_name from sys.databases

可以查询到如图所示数据库名-排序规则

  1. 查看各表字段排序规则(表名-列名-排序规则)。

SELECT t.name TableName, c.name ColumnName, collation_name FROM
sys.columns c inner join sys.tables t on c.object_id = t.object_id

  1. 排序规则不同,修改数据库排序规则,使用如下语句或右键数据库修改数据库属性中的排序规则。

ALTER DATABASE [DBNAME] COLLATE Chinese_PRC_CS_AI

  1. 出现“无法用排他锁锁定改数据库”、“在其他用户正式用数据库时无法更改数据库状态”问题。

    查询正在使用数据库的进程:

select spid from master.dbo.sysprocesses where dbid=db_id(‘DBNAME’)

使用 kill 进程  杀掉进程
如果出现 “不能用 KILL 来终止您自己的进程”,关闭当前查询窗口即可终止该进程,再修改数据库排序规则。
如果再次修改数据库排序规则时,仍然出现此问题,则可将数据库限制访问先修改成单用户或数据库状态修改成OFFLINE后,再修改数据库排序规则,完成后再改回。

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值