可使用 ALTER TABLE 语句更改列的排序规则:
CREATE TABLE MyTable
(PrimaryKey int PRIMARY KEY,
CharCol varchar(10) COLLATE French_CI_AS NOT NULL
)
GO
ALTER TABLE MyTable ALTER COLUMN CharCol
varchar(10)COLLATE Latin1_General_CI_AS NOT NULL
GO
不能更改正由以下对象引用的列的排序规则:
- 计算列。
- 索引。
- 自动生成或由 CREATE STATISTICS 语句生成的分发统计。
- CHECK 约束。
- FOREIGN KEY 约束。
还可在 ALTER DATABASE 上使用 COLLATE 子句来更改数据库的默认排序规则:
ALTER DATABASE MyDatabase COLLATE French_CI_AS
更改数据库的默认排序规则不会更改任何现有用户定义表中的列排序规则。可使用 ALTER TABLE 更改列的排序规则。在 ALTER DATABASE 语句上使用 COLLATE CLAUSE 可以:
- 更改数据库的默认排序规则。新的默认排序规则适用于随后创建在数据库中的所有列、用户定义数据类型、变量和参数。在数据库中定义的对象上解析 SQL 语句中指定的对象标识符时,也使用新的默认排序规则。
- 将系统表中的任何 char、varchar、text、nchar、nvarchar 或 ntext 列更改为使用新的排序规则。
- 将存储过程和用户定义函数的所有现有的 char、varchar、text、nchar、nvarchar 或 ntext 参数和标量返回值更改为使用新的排序规则。
- 将 char、varchar、text、nchar、nvarchar 或 ntext 系统数据类型,以及基于这些系统数据类型的所有用户定义数据类型更改为使用新的默认排序规则。
为列或数据库以外的任何其它对象指派了排序规则后,将不能更改排序规则,除非除去并重新创建对象。这一操作将十分复杂。若要更改 Microsoft® SQL Server™ 2000 实例的默认排序规则,必须:
- 确保具有重新创建用户数据库及数据库中的所有对象所需的全部信息或脚本。
- 使用工具(如大容量复制)导出所有数据。
- 除去所有用户数据库。
- 重建 master 数据库并指定新的排序规则。
- 创建所有数据库及数据库中的所有对象。
- 导入所有数据。
说明 也可以不更改 SQL Server 2000 实例的默认排序规则,而为创建的每个新数据库指定默认排序规则。