使用sqlserver时,不小心出现:
无法解决 XXX 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_CS_AI" 之间的排序规则冲突
也可能是其他排序规则间的冲突,
保证数据库、表、列排序规则一致,则不会出现此问题,
在navicat中新建查询,在查询页面按如下命令操作可解决:
- 查看数据库排序规则(数据库名-对应排序规则)。
select name,collation_name from sys.databases
- 查看各表字段排序规则(表名-列名-排序规则)。
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
- 排序规则不同,修改数据库排序规则,使用如下语句或右键数据库修改数据库属性中的排序规则。
ALTER DATABASE [DBNAME] COLLATE Chinese_PRC_CS_AI
-
出现“无法用排他锁锁定改数据库”、“在其他用户正式用数据库时无法更改数据库状态”问题。
查询正在使用数据库的进程:
select spid from master.dbo.sysprocesses where dbid=db_id(‘DBNAME’)
使用 kill 进程 杀掉进程
如果出现 “不能用 KILL 来终止您自己的进程”,关闭当前查询窗口即可终止该进程,再修改数据库排序规则。
如果再次修改数据库排序规则时,仍然出现此问题,则可将数据库限制访问先修改成单用户或数据库状态修改成OFFLINE后,再修改数据库排序规则,完成后再改回。