修改数据库的排序规则的问题

ohfox 2010-12-03 09:35:16
我之前数据库安装的时候没有特别选择"区分大小写"的排序规则,
因此在我的建表脚本里面有很多字段都是带"COLLATE Chinese_PRC_CI_AS"说明的

我在另一台主机上安装数据库时指定了区分大小写,也就是"Chinese_PRC_CS_AS"了,
结果当把之前的数据库附加过来后,一些比较会报错
"无法解决 equal to 操作中 "Chinese_PRC_CS_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突"

上网查了下,可以通过

方法一.安装SQL时选择区分大小写
或安装完以后重建mastar,选择区分大小
C:\Program Files\Microsoft SQL Server\80\Tools\Binn\rebuildm.exe

方法二.sql server 8.0以上的版本才可以,7.0及其以下不支持
alter database 数据库 COLLATE Chinese_PRC_CI_AS

等方法修改,可是又说比较复杂

我担心我用"alter database 数据库 COLLATE Chinese_PRC_CI_AS "修改后会不会导致更多更奇怪的问题,
想请教下大家,是不是仅仅"alter database 数据库 COLLATE Chinese_PRC_CI_AS "就可以搞定了?
...全文
197 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ohfox 2010-12-03
  • 打赏
  • 举报
回复
还是重装了,哎
谢谢各位
ohfox 2010-12-03
  • 打赏
  • 举报
回复
guguda2008:我用你的方法可以更改我的数据库的规则为"Chinese_PRC_CI_AS",可是查询还是报错;
wxf163: 就只能重新安装这条路了?
王向飞 2010-12-03
  • 打赏
  • 举报
回复
实例级别的只能用你的安装盘 在重新安装 重建master库
ohfox 2010-12-03
  • 打赏
  • 举报
回复
我在企业管理器里面右键查看了我的数据库的属性,已经是"Chinese_PRC_CI_AS"了,可是我的sql为什么还会报错?
无法解决 equal to 操作中 "Chinese_PRC_CS_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
ohfox 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 guguda2008 的回复:]



你那个是实例的排序规则,不是数据库的
[/Quote]

请问怎么修改数据库的排序规则?
我用alter database的方法后,还是没有解决报错的问题.

我在安装的时候多点了"区分大小写"这个选项,安装好了后没有简单的方法可以取消掉么?谢谢
王向飞 2010-12-03
  • 打赏
  • 举报
回复
重新安装
guguda2008 2010-12-03
  • 打赏
  • 举报
回复
USE MASTER
GO
ALTER DATABASE TEST COLLATE CHINESE_PRC_CS_AS
GO
SELECT COLLATION_NAME FROM SYS.DATABASES WHERE NAME='TEST'
--Chinese_PRC_CS_AS
GO
ALTER DATABASE TEST COLLATE CHINESE_PRC_CI_AS
GO
SELECT COLLATION_NAME FROM SYS.DATABASES WHERE NAME='TEST'
--Chinese_PRC_CI_AS
GO
guguda2008 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ohfox 的回复:]

我按照
use master
go
alter database 数据库 COLLATE Chinese_PRC_CI_AS
后,再select serverproperty('Collation'),怎么看到的还是"Chinese_PRC_CS_AS" ??
[/Quote]
你那个是实例的排序规则,不是数据库的
l_xiangxi 2010-12-03
  • 打赏
  • 举报
回复
在之前的数据库中,通过修改表的字段排序规则来修改,即每个表的需要修改的字段,进行修改。
比较麻烦一点,修改后可立即验证。
ohfox 2010-12-03
  • 打赏
  • 举报
回复
我按照
use master
go
alter database 数据库 COLLATE Chinese_PRC_CI_AS
后,再select serverproperty('Collation'),怎么看到的还是"Chinese_PRC_CS_AS" ??
ohfox 2010-12-03
  • 打赏
  • 举报
回复
我按照
use master
go
alter database 数据库 COLLATE Chinese_PRC_CI_AS
后,再select serverproperty('Collation'),怎么看到的还是"Chinese_PRC_CS_AS" ??
guguda2008 2010-12-03
  • 打赏
  • 举报
回复
如果只是少数表有问题,字段比较时指定排序规则就行了。

ALTER DATABASE COLLATE可以改变数据库的排序规则,但要注意如果建表时为列显式指定了排序规则的话是不受数据库排序规则的影响的。其它没想到什么。
ohfox 2010-12-03
  • 打赏
  • 举报
回复
我按照
use master
go
alter database 数据库 COLLATE Chinese_PRC_CI_AS
后,再select serverproperty('Collation'),怎么看到的还是"Chinese_PRC_CS_AS" ??
水族杰纶 2010-12-03
  • 打赏
  • 举报
回复

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧