SQL Server 字符集问题——中文乱码、排序错误

在创建 SQLServer 数据库时未指定排序字符集,databases 则会使用 instances 的排序规则。为了支持中文,需要设置成 Chinese_PRC_CI_AS

通过 sql 脚本修改

-- 修改现有databases的排序规则 
ALTER DATABASE dbname COLLATE Chinese_PRC_CI_AS

通过SQL Server 客户端操作

右击数据库——属性——选项——修改排序规则。

image.png 如果操作报错,出现数据库被其他用户连接使用时,出现排他锁的错误。此时用脚本修改为单用户模式——改排序规则——再修改回多用户。

Microsoft SQL Server 5030错误解决办法

  • 修改为单用户模式:

    ALTER DATABASE db_database SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    
  • 然后关闭所有的查询窗口,修改 OptionsCollocation属性为Chinese_PRC_90_CI_AS

    -- 修改数据库字符集  
    ALTER DATABASE db_database COLLATE Chinese_PRC_90_CI_AS
    
  • 再修改为多用户模式

    ALTER DATABASE db_database SET MULTI_USER