create database mmm go use mmm go create table test(a varchar(100),b nvarchar(100)) create table test2(a2 text,b2 ntext,b3 char(10) )----这里显示现有的: select collation,* from syscolumns a,sysobjects d where a.id=d.id and d.xtype='U'---这里改排序规则 ALTER DATABASE mmm COLLATE Latin1_General_Ci_Ai
EXEC sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDEupdate syscolumns set collationid=1252 where collation='Chinese_PRC_CI_AS' and id in (select id from sysobjects where xtype='U')EXEC sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDEupdate syscolumns set collationid=1252 ----------------------------------^^^^这个id必须在帮助里查到和你想改的规则对应 where collation='Chinese_PRC_CI_AS' ----------------^^^^^^^^^^^^^^^^^^这是旧的规则 and id in (select id from sysobjects where xtype='U')EXEC sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE
请严格按照我下面的步骤来:
c:>net stop mssqlserver
停掉SQL Server的服务.
c:>\\mssql7\binn\rebuildm.exe
运行rebuildm.exe文件已重建master库,更改字符集,排序方式,及大小写敏感.
(它不是要你重装,不要搞错了!!!)重建好后
c:>net start mssqlserver
启动SQL Server的服务.
您还可以使用 Transact-SQL 来设置排序规则顺序。例如,要按照捷克共和国的排序顺序和区分大小写及重音的形式创建一个新的数据库,可以使用如下语句:USE master
GO
CREATE DATABASE Products
ON
( NAME = products_dat,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\products.mdf' )
COLLATE Czech_CS_AS
GO有趣的是,您甚至可以使用 ALTER DATABASE 语句来更改现有数据库的排序规则(当使用 SQL Server 企业管理器时,该语句不可用)。例如,以下语句将 Products 数据库的排序规则从 Czech_CS_AS 更改为 Czech_CI_AI (将区分大小写和重音更改为不区分大小写和重音):ALTER DATABASE Products
COLLATE Czech_CI_AI更改数据库排序规则之前的注意事项要更改数据库的排序规则,必须符合以下所有条件: 不会有其他人正在使用该数据库。
没有依赖于数据库排序规则的架构绑定对象。符合条件的架构绑定对象包括以下任何内容:
用户定义的函数和用 SCHEMABINDING 创建的视图
已计算的列
CHECK 约束
表值函数,它们使用从默认数据库排序规则继承的排序规则来返回包含字符列的表。
尝试更改数据库排序规则的行为不会导致任何系统名称的重复。这是很容易想象的,例如尝试将排序规则从 French_CI_AS 更改为 French_CS_AS(或将不区分大小写更改为区分大小写)。对于 SQL Server 早期版本中的排序规则,可能有两个分别名为 Table1 和 TABLE1 的表;然而,对于 SQL Server 2000 的排序规则,这种情形会导致重复。可能导致这种重复的对象包括:
对象名(如过程、表、触发器或视图)。
构架名(如组、角色或用户)。
标量类型名(如系统和用户定义的类型)。
全文目录名
对象中的列名或参数名。
表中的索引名。
以上限制都具有实际的意义,它们将防止您执行会破坏数据或数据库的操作。实际上,有些人甚至认为这些规则不够严格! 如果 text、varchar 或 char 字段中包含数据并且列上没有显式的排序规则,那么更改数据库排序规则就会改变数据编码的解释方式,从而毁坏 ASCII 范围(包含在所有代码页中)外的所有字符。这样做是很危险的。相反,如果数据库包含的文本数据列不属于 Unicode 类型并且这些列没有它们自己的显式排序规则集(参见下面的在列级别指定的排序规则),您就应该尽量避免更改任何这些数据库的排序规则。此外,您也可以使用 Transact-SQL DATABASEPROPERTYEX 函数来查找数据库的排序规则,例如:SELECT CONVERT(char, DATABASEPROPERTYEX('pubs', 'collation'))
go
----再写入:
ALTER DATABASE mmm COLLATE Latin1_General_Ci_Ai
go
可以哟!
只是将MMM的默认COLLATE改变了
MMM中原有的表的列的COLLATE属性没有变啊
_____多谢大力!
ALTER COLUMN payterms nvarchar(100) COLLATE Chinese_PRC_CI_AS ????
go
use mmm
go
create table test(a varchar(100),b nvarchar(100))
create table test2(a2 text,b2 ntext,b3 char(10) )----这里显示现有的:
select collation,* from syscolumns a,sysobjects d where a.id=d.id and d.xtype='U'---这里改排序规则
ALTER DATABASE mmm COLLATE Latin1_General_Ci_Ai
----------------------------------^^^^这个id必须在帮助里查到和你想改的规则对应
where collation='Chinese_PRC_CI_AS'
----------------^^^^^^^^^^^^^^^^^^这是旧的规则
and id in (select id from sysobjects where xtype='U')EXEC sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE