如何修改数据库的服务器排序规则?

时间:2021-12-16 06:43:53
      我的数据库是sql server2005,安装到电脑上后,往表里添加中文字符后,查询出来后显示为'????'这样的句号。我要如何修改数据库的服务器排序规则????哪位高手能指点一下。。。。。

7 个解决方案

#1


添加的时候加 N
字段类型用unicode的 如 nvarchar
insert into tb values(N'中文')

#2


1.sp_helpsort 
SELECT SERVERPROPERTY ('Collation') 
查看你的排序规则. 
不过你的这个应该和字符集有关.

2.更改服务器排序规则 
更改 SQL Server 2005 实例的默认排序规则的操作可能会比较复杂,包括以下步骤: 

确保具有重新创建用户数据库及这些数据库中的所有对象所需的全部信息或脚本。 
使用工具(例如大容量复制)导出所有数据。 
删除所有用户数据库。 
重新生成在 setup 命令的 SQLCOLLATION 属性中指定新的排序规则的 master 数据库。例如: 
复制代码 
start /wait setup.exe /qb INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=test SQLCOLLATION=SQL_Latin1_General_CP1_CI_AI 
有关重新生成 master 数据库的详细信息,请参阅如何重新生成 SQL Server 2005 的 Master 数据库。 
创建所有数据库及这些数据库中的所有对象。 
导入所有数据。 
注意:  
可以为创建的每个新数据库指定默认排序规则,而不更改 SQL Server 2005 实例的默认排序规则。 

3.设置和更改数据库排序规则 
创建新数据库时,可以使用下列内容之一指定排序规则: 
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 :

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

2.

--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


3.

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 --不区分大小写


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

方法二.sql   server   8.0以上的版本才可以,7.0及其以下不支持
alter   database   数据库   COLLATE   Chinese_PRC_CS_AS
修改排序规则,改成大小写敏感的排序规则
如果只修改一个表,用alter   table语句  
如果修改一个库的默认排序规则,用alter   datebase语句  
如果修改整个服务器的默认排序规则,用Rebuildm.exe重建master库  
--指定排序规则就可以了

--示例  
select   replace('AbacB'   collate   Chinese_PRC_CS_AS_WS,'B','test')  

--如果你是要求表支持,则可以建表时指定排序规则,这样replace就不用写排序规则了  

--示例  
create   table   tb(a   varchar(20)   collate   Chinese_PRC_CS_AS_WS)  
insert   tb   values('Abac')  

select   replace(a,'a','test')   from   tb

drop   table   tb

指定排序规则即可

Windows   排序规则名称  
在   COLLATE   子句中指定   Windows   排序规则名称。Windows   排序规则名称由排序规则指示器和比较风格构成。  

语法  
<   Windows_collation_name   >   ::   =  

        CollationDesignator_ <ComparisonStyle>

        <   ComparisonStyle   >   ::=  
                CaseSensitivity_AccentSensitivity  
                [_KanatypeSensitive   [_WidthSensitive   ]   ]  
                ¦   _BIN  

参数  
CollationDesignator  

指定   Windows   排序规则使用的基本排序规则。基本排序规则包括:  

当指定按字典排序时应用其排序规则的字母表或语言


用于存储非   Unicode   字符数据的代码页。  
例如   Latin1_General   或法文,两者都使用代码页   1252,或土耳其文,它使用代码页   1254。  

CaseSensitivity

CI   指定不区分大小写,CS   指定区分大小写。

AccentSensitivity

AI   指定不区分重音,AS   指定区分重音。

KanatypeSensitive

Omitted   指定不区分大小写,KS   指定区分假名类型。

WidthSensitivity

Omitted   指定不区分大小写,WS   指定区分大小写。

BIN

指定使用二进制排序次序。  


如果你只是目前查询区分,那么还是不要这样改,免得又反悔,如此查询:
select   *   from   a  
/*
a_nam             a_add            
----------   ----------  
1                     aa
1                     bb
2                     cc
2                     vv
2                     kk
3                     dd
3                     ee
4                     dd
5                     ee
6                     yy
6                     yy

(11   row(s)   affected)
*/
现在我们查询a_add   =   'aa'的,'Aa'等等不行!
Example   1:

select   *   from   a  
where   a_add   collate   Chinese_PRC_CS_AS_WS   =   'aa'  
/*
a_nam             a_add            
----------   ----------  
1                     aa

(1   row(s)   affected)
*/

Example   2:

select   *   from   a  
where   a_add   collate   Chinese_PRC_CS_AS_WS   =   'Aa'  
/*
a_nam             a_add            
----------   ----------  

(0   row(s)   affected)
*/

方法三.上面的记不住,那么就用最笨的方法,转化为ascii
select   *   from   a
where  
ascii(substring(a_add,1,1))   =   ascii(substring('Aa',1,1))
and  
ascii(substring(a_add,2,1))   =   ascii(substring('Aa',2,1))
/*
a_nam             a_add            
----------   ----------  

(0   row(s)   affected)
*/

方法三:任何版本都可以
select   *   from   a  
where   cast(a_add   as   varbinary(10))=   cast('aa'   as   varbinary(10)) 



 

#3


引用 1 楼 bancxc 的回复:
添加的时候加 N
字段类型用unicode的 如 nvarchar
insert into tb values(N'中文')


有没有办法数据库的服务器排序规则?

#4


在 SQL Server 2000 中转换数据库的排序规则
要在 SQL Server 2000 中转换数据库的排序规则,请按照下列步骤操作: 
备份源数据库。
注意所有列是否使用 COLLATE 子句。
使用适当的排序规则在目标服务器上创建新的数据库。
如果没有列使用 COLLATE 子句,请使用 DTS 将数据传输到目标服务器。为此,请启用“使用排序规则”选项以进行代码页转换,并将数据转换为目标数据库上的新排序规则。如果所有列均使用 COLLATE 子句,请按照下列步骤操作: 
为所有对象(不包括索引、触发器、主键、外键、默认设置和约束)生成脚本。此外,确保启用了“仅为与 7.0 版兼容的功能编写脚本”选项,以便从脚本删除 COLLATE 子句。

注意:使用“仅为与 7.0 版兼容的功能编写脚本”选项时,可以更改排序规则。但是,生成脚本时将不考虑任何新的 SQL Server 2000 选项(包括用户定义的函数、扩展属性、INSTEAD OF 触发器和视图上的索引)。
在目标数据库上运行步骤 a 中创建的脚本,以便使用目标数据库的排序规则创建对象。
使用 DTS 仅传输源数据库中的数据。
成功传输数据后,将会为源数据库中的所有约束、外键、主键和索引生成脚本。
在目标数据库上运行步骤 d 中创建的脚本。 
回到顶端
更改 master 数据库的排序规则
如果要更改 master 数据库的排序规则,则必须重建 master 数据库。在重建 master 数据库时,实质上是创建了新的 master 数据库。因此,重建 master 数据库之前,应考虑下列事项: 
确保创建了当前 master 数据库的有效备份。在重建 master 数据库时,还会重建 msdb 数据库和 model 数据库。因此,在重建 master 数据库之前必须备份 msdb 数据库和 model 数据库。msdb 数据库是用于存储 SQL Server 作业、警报、运算符和 DTS 包的系统数据库。model 数据库是创建新数据库时所使用的模板数据库。
因为重建 master 数据库会创建一个新的 master 数据库,所以必须在重建 master 数据库之后重新输入现有登录信息。因此,还必须在重建 master 数据库之前导出登录信息,然后在重建 master 数据库后,导入登录信息。 有关如何导出登录信息的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 
246133  (http://support.microsoft.com/kb/246133/ ) 如何在 SQL Server 实例之间传输登录和密码 
因为在重建 master 数据库时会重建 msdb 数据库,所以在重建 master 数据库之前,必须为所有作业、警报和运算符生成脚本。此外,还必须确保移动了所有 DTS 包。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 
314546  (http://support.microsoft.com/kb/314546/ ) 如何在运行 SQL Server 的计算机之间移动数据库 
因为在重建 master 数据库时会重建 model 数据库,所以在重建 master 数据库之前,必须记下或导出以前对 model 数据库所做的全部更改或为其生成脚本。重建 model 数据库之后,请重新应用已记录的全部更改。
在 SQL Server 2000 中更改 master 数据库的排序规则
更改 master 数据库的排序规则之前,请按照下列步骤操作: 
重建 master 数据库之后,不会自动恢复在重建此数据库之前创建的所有数据库。因此,所有数据库必须从备份进行还原,或者如果文件仍在磁盘上,则可以使用 sp_attach_db 系统存储过程重新附加数据库。请确保在重建 master 数据库之前将所有必要的信息重新附加到现有数据库。有关 sp_attach_db 系统存储过程的更多信息,请访问下面的 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/aa259611(SQL.80).aspx (http://msdn2.microsoft.com/en-us/library/aa259611(SQL.80).aspx) 
在重建 master 数据库时,仅更改 master 数据库、model 数据库和 msdb 数据库的排序规则。不会更改用户数据库的排序规则。要更改现有用户数据库的排序规则或者使用适当的排序规则创建新的数据库,请使用 ALTER DATABASE 命令,然后使用 DTS 或 bcp 实用工具将数据传输到新的数据库。

注意:如果在 SQL Server 2000 中使用 ALTER DATABASE 命令来更改数据库的排序规则,则表中列的排序规则将不会自动更改。要更改列的排序规则,请使用 ALTER TABLE 命令和 ALTER COLUMN 命令。如果使用 DTS,则可以在传输数据或使用“使用排序规则”选项之前,使用适当的排序规则创建表和列。如果使用的 DTS 和表已经包含适当的排序规则,请确保在运行软件包之前禁用了“首先删除现有对象”选项。

#5


#6


引用楼主 kagulakoli 的回复:
      我的数据库是sql server2005,安装到电脑上后,往表里添加中文字符后,查询出来后显示为'????'这样的句号。我要如何修改数据库的服务器排序规则????哪位高手能指点一下。。。。。


alter database 数据库 collate 排序规格


其中,某些排序规则指定CI 不区分大小写,CS 指定区分大小写。

如:alter database 数据库 COLLATE Chinese_PRC_CI_AS 
    不区分大小写,而
    alter database 数据库 COLLATE Chinese_PRC_CS_AS 
    使之区分大小写。

使用如下命令,可以获得更多的规则:
SELECT *
FROM ::fn_helpcollations()

#7


alter database修改数据库的排序规则

重建master库修改数据库服务器默认排序规则

alter table 修改字段的排序规则

我感觉你那情况修改字段的排序规则或者直接使用nvarchar

#1


添加的时候加 N
字段类型用unicode的 如 nvarchar
insert into tb values(N'中文')

#2


1.sp_helpsort 
SELECT SERVERPROPERTY ('Collation') 
查看你的排序规则. 
不过你的这个应该和字符集有关.

2.更改服务器排序规则 
更改 SQL Server 2005 实例的默认排序规则的操作可能会比较复杂,包括以下步骤: 

确保具有重新创建用户数据库及这些数据库中的所有对象所需的全部信息或脚本。 
使用工具(例如大容量复制)导出所有数据。 
删除所有用户数据库。 
重新生成在 setup 命令的 SQLCOLLATION 属性中指定新的排序规则的 master 数据库。例如: 
复制代码 
start /wait setup.exe /qb INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=test SQLCOLLATION=SQL_Latin1_General_CP1_CI_AI 
有关重新生成 master 数据库的详细信息,请参阅如何重新生成 SQL Server 2005 的 Master 数据库。 
创建所有数据库及这些数据库中的所有对象。 
导入所有数据。 
注意:  
可以为创建的每个新数据库指定默认排序规则,而不更改 SQL Server 2005 实例的默认排序规则。 

3.设置和更改数据库排序规则 
创建新数据库时,可以使用下列内容之一指定排序规则: 
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 :

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

2.

--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


3.

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 --不区分大小写


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

方法二.sql   server   8.0以上的版本才可以,7.0及其以下不支持
alter   database   数据库   COLLATE   Chinese_PRC_CS_AS
修改排序规则,改成大小写敏感的排序规则
如果只修改一个表,用alter   table语句  
如果修改一个库的默认排序规则,用alter   datebase语句  
如果修改整个服务器的默认排序规则,用Rebuildm.exe重建master库  
--指定排序规则就可以了

--示例  
select   replace('AbacB'   collate   Chinese_PRC_CS_AS_WS,'B','test')  

--如果你是要求表支持,则可以建表时指定排序规则,这样replace就不用写排序规则了  

--示例  
create   table   tb(a   varchar(20)   collate   Chinese_PRC_CS_AS_WS)  
insert   tb   values('Abac')  

select   replace(a,'a','test')   from   tb

drop   table   tb

指定排序规则即可

Windows   排序规则名称  
在   COLLATE   子句中指定   Windows   排序规则名称。Windows   排序规则名称由排序规则指示器和比较风格构成。  

语法  
<   Windows_collation_name   >   ::   =  

        CollationDesignator_ <ComparisonStyle>

        <   ComparisonStyle   >   ::=  
                CaseSensitivity_AccentSensitivity  
                [_KanatypeSensitive   [_WidthSensitive   ]   ]  
                ¦   _BIN  

参数  
CollationDesignator  

指定   Windows   排序规则使用的基本排序规则。基本排序规则包括:  

当指定按字典排序时应用其排序规则的字母表或语言


用于存储非   Unicode   字符数据的代码页。  
例如   Latin1_General   或法文,两者都使用代码页   1252,或土耳其文,它使用代码页   1254。  

CaseSensitivity

CI   指定不区分大小写,CS   指定区分大小写。

AccentSensitivity

AI   指定不区分重音,AS   指定区分重音。

KanatypeSensitive

Omitted   指定不区分大小写,KS   指定区分假名类型。

WidthSensitivity

Omitted   指定不区分大小写,WS   指定区分大小写。

BIN

指定使用二进制排序次序。  


如果你只是目前查询区分,那么还是不要这样改,免得又反悔,如此查询:
select   *   from   a  
/*
a_nam             a_add            
----------   ----------  
1                     aa
1                     bb
2                     cc
2                     vv
2                     kk
3                     dd
3                     ee
4                     dd
5                     ee
6                     yy
6                     yy

(11   row(s)   affected)
*/
现在我们查询a_add   =   'aa'的,'Aa'等等不行!
Example   1:

select   *   from   a  
where   a_add   collate   Chinese_PRC_CS_AS_WS   =   'aa'  
/*
a_nam             a_add            
----------   ----------  
1                     aa

(1   row(s)   affected)
*/

Example   2:

select   *   from   a  
where   a_add   collate   Chinese_PRC_CS_AS_WS   =   'Aa'  
/*
a_nam             a_add            
----------   ----------  

(0   row(s)   affected)
*/

方法三.上面的记不住,那么就用最笨的方法,转化为ascii
select   *   from   a
where  
ascii(substring(a_add,1,1))   =   ascii(substring('Aa',1,1))
and  
ascii(substring(a_add,2,1))   =   ascii(substring('Aa',2,1))
/*
a_nam             a_add            
----------   ----------  

(0   row(s)   affected)
*/

方法三:任何版本都可以
select   *   from   a  
where   cast(a_add   as   varbinary(10))=   cast('aa'   as   varbinary(10)) 



 

#3


引用 1 楼 bancxc 的回复:
添加的时候加 N
字段类型用unicode的 如 nvarchar
insert into tb values(N'中文')


有没有办法数据库的服务器排序规则?

#4


在 SQL Server 2000 中转换数据库的排序规则
要在 SQL Server 2000 中转换数据库的排序规则,请按照下列步骤操作: 
备份源数据库。
注意所有列是否使用 COLLATE 子句。
使用适当的排序规则在目标服务器上创建新的数据库。
如果没有列使用 COLLATE 子句,请使用 DTS 将数据传输到目标服务器。为此,请启用“使用排序规则”选项以进行代码页转换,并将数据转换为目标数据库上的新排序规则。如果所有列均使用 COLLATE 子句,请按照下列步骤操作: 
为所有对象(不包括索引、触发器、主键、外键、默认设置和约束)生成脚本。此外,确保启用了“仅为与 7.0 版兼容的功能编写脚本”选项,以便从脚本删除 COLLATE 子句。

注意:使用“仅为与 7.0 版兼容的功能编写脚本”选项时,可以更改排序规则。但是,生成脚本时将不考虑任何新的 SQL Server 2000 选项(包括用户定义的函数、扩展属性、INSTEAD OF 触发器和视图上的索引)。
在目标数据库上运行步骤 a 中创建的脚本,以便使用目标数据库的排序规则创建对象。
使用 DTS 仅传输源数据库中的数据。
成功传输数据后,将会为源数据库中的所有约束、外键、主键和索引生成脚本。
在目标数据库上运行步骤 d 中创建的脚本。 
回到顶端
更改 master 数据库的排序规则
如果要更改 master 数据库的排序规则,则必须重建 master 数据库。在重建 master 数据库时,实质上是创建了新的 master 数据库。因此,重建 master 数据库之前,应考虑下列事项: 
确保创建了当前 master 数据库的有效备份。在重建 master 数据库时,还会重建 msdb 数据库和 model 数据库。因此,在重建 master 数据库之前必须备份 msdb 数据库和 model 数据库。msdb 数据库是用于存储 SQL Server 作业、警报、运算符和 DTS 包的系统数据库。model 数据库是创建新数据库时所使用的模板数据库。
因为重建 master 数据库会创建一个新的 master 数据库,所以必须在重建 master 数据库之后重新输入现有登录信息。因此,还必须在重建 master 数据库之前导出登录信息,然后在重建 master 数据库后,导入登录信息。 有关如何导出登录信息的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 
246133  (http://support.microsoft.com/kb/246133/ ) 如何在 SQL Server 实例之间传输登录和密码 
因为在重建 master 数据库时会重建 msdb 数据库,所以在重建 master 数据库之前,必须为所有作业、警报和运算符生成脚本。此外,还必须确保移动了所有 DTS 包。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 
314546  (http://support.microsoft.com/kb/314546/ ) 如何在运行 SQL Server 的计算机之间移动数据库 
因为在重建 master 数据库时会重建 model 数据库,所以在重建 master 数据库之前,必须记下或导出以前对 model 数据库所做的全部更改或为其生成脚本。重建 model 数据库之后,请重新应用已记录的全部更改。
在 SQL Server 2000 中更改 master 数据库的排序规则
更改 master 数据库的排序规则之前,请按照下列步骤操作: 
重建 master 数据库之后,不会自动恢复在重建此数据库之前创建的所有数据库。因此,所有数据库必须从备份进行还原,或者如果文件仍在磁盘上,则可以使用 sp_attach_db 系统存储过程重新附加数据库。请确保在重建 master 数据库之前将所有必要的信息重新附加到现有数据库。有关 sp_attach_db 系统存储过程的更多信息,请访问下面的 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/aa259611(SQL.80).aspx (http://msdn2.microsoft.com/en-us/library/aa259611(SQL.80).aspx) 
在重建 master 数据库时,仅更改 master 数据库、model 数据库和 msdb 数据库的排序规则。不会更改用户数据库的排序规则。要更改现有用户数据库的排序规则或者使用适当的排序规则创建新的数据库,请使用 ALTER DATABASE 命令,然后使用 DTS 或 bcp 实用工具将数据传输到新的数据库。

注意:如果在 SQL Server 2000 中使用 ALTER DATABASE 命令来更改数据库的排序规则,则表中列的排序规则将不会自动更改。要更改列的排序规则,请使用 ALTER TABLE 命令和 ALTER COLUMN 命令。如果使用 DTS,则可以在传输数据或使用“使用排序规则”选项之前,使用适当的排序规则创建表和列。如果使用的 DTS 和表已经包含适当的排序规则,请确保在运行软件包之前禁用了“首先删除现有对象”选项。

#5


#6


引用楼主 kagulakoli 的回复:
      我的数据库是sql server2005,安装到电脑上后,往表里添加中文字符后,查询出来后显示为'????'这样的句号。我要如何修改数据库的服务器排序规则????哪位高手能指点一下。。。。。


alter database 数据库 collate 排序规格


其中,某些排序规则指定CI 不区分大小写,CS 指定区分大小写。

如:alter database 数据库 COLLATE Chinese_PRC_CI_AS 
    不区分大小写,而
    alter database 数据库 COLLATE Chinese_PRC_CS_AS 
    使之区分大小写。

使用如下命令,可以获得更多的规则:
SELECT *
FROM ::fn_helpcollations()

#7


alter database修改数据库的排序规则

重建master库修改数据库服务器默认排序规则

alter table 修改字段的排序规则

我感觉你那情况修改字段的排序规则或者直接使用nvarchar