日期:2014-05-18  浏览次数:20437 次

sql2005如何修改排序规则
我的操作系统是英文版的,安装过中文语言包
还原的数据库是英文的,默认的排序规则是SQL_Latin1_General_CP1_CL_AS
用sql语句更新条目后 只要是中文的都显示????  
我认为是数据库排序规则的原因 但是sql2005中我改排序规则的时候显示“无法使用排它锁锁定该数据库”
请问怎么更改排序规则呢


------解决方案--------------------
sp_helpsort
SELECT SERVERPROPERTY ('Collation')

查看你的排序规则.

不过你的这个应该和字符集有关.
------解决方案--------------------
设置和更改数据库排序规则 

创建新数据库时,可以使用下列内容之一指定排序规则: 

CREATE DATABASE 语句的 COLLATE 子句。


SQL Server Management Studio.


SQL 管理对象 (SMO) 中的 Database.Collation 属性。 


如果未指定排序规则,则使用服务器排序规则。

可以使用 ALTER DATABASE 语句的 COLLATE 子句来更改在用户数据库中创建的任何新对象的排序规则。使用此语句不能更改任何现有用户定义的表中列的排序规则。使用 ALTER TABLE 的 COLLATE 子句可以更改这些列的排序规则。 

更改数据库排序规则时,需要更改下列内容:

数据库的默认排序规则,这一新的默认排序规则将应用于数据库中后续创建的所有列、用户定义的数据类型、变量和参数。根据数据库中定义的对象解析 SQL 语句中指定的对象标识符时,也使用新的默认排序规则。


将系统表中的任何 char、varchar、text、nchar、nvarchar 或 ntext 列更改为使用新的排序规则。


将存储过程和用户定义函数的所有现有 char、varchar、text、nchar、nvarchar 或 ntext 参数和标量返回值更改为使用新的排序规则。


将 char、varchar、text、nchar、nvarchar 或 ntext 系统数据类型和基于这些系统数据类型的所有用户定义的数据类型更改为使用新的默认排序规则。 

------解决方案--------------------
SQL code

将数据库的字符集修改为:
alter database dbname collate Chinese_PRC_CI_AS

------解决方案--------------------
SQL code
--1. 为数据库指定排序规则
CREATE DATABASE db COLLATE Chinese_PRC_CI_AS
GO

ALTER DATABASE db COLLATE Chinese_PRC_BIN
GO


/*====================================*/


--2. 为表中的列指定排序规则
CREATE TABLE tb(
col1 varchar(10),
col2 varchar(10) COLLATE Chinese_PRC_CI_AS)
GO

ALTER TABLE tb ADD col3 varchar(10) COLLATE Chinese_PRC_BIN
GO

ALTER TABLE tb ALTER COLUMN col2 varchar(10) COLLATE Chinese_PRC_BIN
GO


/*====================================*/


--3. 为字符变量和参数应用排序规则
DECLARE @a varchar(10),@b varchar(10)
SELECT @a='a',@b='A'

--使用排序规则 Chinese_PRC_CI_AS
SELECT CASE WHEN @a COLLATE Chinese_PRC_CI_AS = @b THEN '@a=@b' ELSE '@a<>@b' END
--结果:@a=@b

--使用排序规则 Chinese_PRC_BIN
SELECT CASE WHEN @a COLLATE Chinese_PRC_BIN = @b THEN '@a=@b' ELSE '@a<>@b' END
--结果:@a<>@b