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

it2024-04-06  56

使用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后,再修改数据库排序规则,完成后再改回。

最新回复(0)