日期:2014-05-17  浏览次数:20477 次

怎么让SQL SERVER 2008 R2系统 不区分大小写
我以前的库排序是二进制的,版本是SQL 2000 区分大小写 ,我做了BAK文件, 恢复到SQL SERVER 2008 R2 我发现居然还是二进制的,查询数据,依然是区分大小写的,那么我如何转换成 不区分大小写呢,谢谢.

------解决方案--------------------
USE 你的数据库
GO


ALTER DATABASE 你的数据库 COLLATE Chinese_PRC_BIN
GO

--返回0,说明
select case when 'aa' = 'AA' then 1 else 0 end
/*
0
*/



--通过制定排序规则collate Chinese_PRC_CI_AS,也就是不区分大小写
--返回1,说明
select case when 'aa' collate Chinese_PRC_CI_AS = 'AA' collate Chinese_PRC_CI_AS 
                 then 1 
            else 0 
       end
/*
1
*/

------解决方案--------------------
如果你希望,整个数据库都要不区分大小写,而不只是某个语句不区分大小的话,那么需要修改数据库的排序规则:


ALTER DATABASE 你的数据库 COLLATE Chinese_PRC_CI_AS
GO

------解决方案--------------------
默认就不区分,除非你安装的时候额外指定了
------解决方案--------------------
引用:
Quote: 引用:

如果你希望,整个数据库都要不区分大小写,而不只是某个语句不区分大小的话,那么需要修改数据库的排序规则:


ALTER DATABASE 你的数据库 COLLATE Chinese_PRC_CI_AS
GO

执行的时候出现以下提示
消息 5030,级别 16,状态 2,第 1 行
无法用排他锁锁定该数据库,以执行该操作。
消息 5072,级别 16,状态 1,第 1 行
ALTER DATABASE 失败。无法将数据库 'HNBD' 的默认排序规则设置为 Chinese_PRC_CI_AS。


试试下面的命令,不过不要在系统运行繁忙的时候使用:



alter database 数据库
set single_user
with rollback immediate
go

ALTER DATABASE 数据库 COLLATE Chinese_PRC_CI_AS
GO

alter database 数据库
set multi_user

------解决方案--------------------
1、关闭sql agent
2、重启服务器
3、执行:
use master
go
alter database 数据库
set single_user
with rollback immediate
go
 
ALTER DATABASE 数据库 COLLATE Chinese_PRC_CI_AS
GO
 
alter database 数据库
set multi_user
------解决方案--------------------
引用:
1、关闭sql agent
2、重启服务器
3、执行:
use master
go
alter database 数据库
set single_u