怎样修改已存在资料表的排序规则(sql server collate)

时间:2022-05-12 06:52:53
1. 已存在资料库 TEST_DB, 排序规则为:Chinese_*_Stroke_CI_AS  (中文繁体,不区分大小写)
2. 资料库 TEST_DB中的资料表栏位排序规则同样是:Chinese_*_Stroke_CI_AS  (中文繁体,不区分大小写)
3. 目前想调整 资料库 TEST_DB 的排序规则为:Chinese_*_Stroke_CS_AS (中文繁体,区分大小写),已通过{ alter database [TEST_DB] collate Chinese_*_Stroke_CS_AS}  实现
4. 但发现资料库 TEST_DB 中已存在资料表的栏位,未同时一起改变,还保持Chinese_*_Stroke_CI_AS  (中文繁体,不区分大小写)


请大家帮忙看有没有办法把资料库里面所有的资料表栏位的排序规则都改为: Chinese_*_Stroke_CS_AS (中文繁体,区分大小写)


不要每个表,每个栏位,一个个改啊! 没有办法一次全部改掉!!!

4 个解决方案

#1


没试过,你可以尝试更改整个库.

修改排序规则

ALTER   TABLE   tb
  ALTER   COLUMN   colname   nvarchar(100)   COLLATE   Chinese_PRC_CI_AS  
--不区分大小写

ALTER   TABLE   tb  
  ALTER   COLUMN   colname   nvarchar(100)   COLLATE   Chinese_PRC_CS_AS  
--区分大小写

数据库
ALTER   DATABASE   database  
COLLATE   Chinese_PRC_CS_AS  
--区分大小写

ALTER   DATABASE   database  
  COLLATE   Chinese_PRC_CI_AS  
--不区分大小写

#2


引用楼主 gary_cn 的回复:
1. 已存在资料库 TEST_DB, 排序规则为:Chinese_*_Stroke_CI_AS  (中文繁体,不区分大小写)
2. 资料库 TEST_DB中的资料表栏位排序规则同样是:Chinese_*_Stroke_CI_AS  (中文繁体,不区分大小写)
3. 目前想调整 资料库 TEST_DB 的排序规则为:Chinese_*_Stroke_CS_AS (中……


我有试,改整个资料库,发现已存在的资料表里面栏位的排序规则,没有一起改变。
需要一个个去改,太麻烦了!不知道有没有简单的方法。。

等等。。

#3


因为更改排序规则的目标只有数据库和列,而且当列有自己的排序规则的时候是不会应用数据库的排序规则,解决办法有如下一些参考
1 更改查询语句指定select的collate选项
2 定义游标查找数据表的指定列,并用alter column更改
3 把原有的数据库还原到一个新的数据库,然后通过dts/ssis的"复制数据库对象"的use collete进行转换

#4


最简单的方法就是重新安装的时候选择服务器排序规则为大小写敏感

#1


没试过,你可以尝试更改整个库.

修改排序规则

ALTER   TABLE   tb
  ALTER   COLUMN   colname   nvarchar(100)   COLLATE   Chinese_PRC_CI_AS  
--不区分大小写

ALTER   TABLE   tb  
  ALTER   COLUMN   colname   nvarchar(100)   COLLATE   Chinese_PRC_CS_AS  
--区分大小写

数据库
ALTER   DATABASE   database  
COLLATE   Chinese_PRC_CS_AS  
--区分大小写

ALTER   DATABASE   database  
  COLLATE   Chinese_PRC_CI_AS  
--不区分大小写

#2


引用楼主 gary_cn 的回复:
1. 已存在资料库 TEST_DB, 排序规则为:Chinese_*_Stroke_CI_AS  (中文繁体,不区分大小写)
2. 资料库 TEST_DB中的资料表栏位排序规则同样是:Chinese_*_Stroke_CI_AS  (中文繁体,不区分大小写)
3. 目前想调整 资料库 TEST_DB 的排序规则为:Chinese_*_Stroke_CS_AS (中……


我有试,改整个资料库,发现已存在的资料表里面栏位的排序规则,没有一起改变。
需要一个个去改,太麻烦了!不知道有没有简单的方法。。

等等。。

#3


因为更改排序规则的目标只有数据库和列,而且当列有自己的排序规则的时候是不会应用数据库的排序规则,解决办法有如下一些参考
1 更改查询语句指定select的collate选项
2 定义游标查找数据表的指定列,并用alter column更改
3 把原有的数据库还原到一个新的数据库,然后通过dts/ssis的"复制数据库对象"的use collete进行转换

#4


最简单的方法就是重新安装的时候选择服务器排序规则为大小写敏感