设置或更改数据库排序规则

本主题说明如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2012 中设置和更改数据库排序规则。 如果未指定排序规则,则使用服务器排序规则。

本主题内容

  • 开始之前:

    限制和局限

    建议

    安全性

  • 若要设置或更改数据库排序规则,请使用:

    SQL Server Management Studio

    Transact-SQL

开始之前

限制和局限

  • 仅限 Windows Unicode 的排序规则只能与 COLLATE 子句一起使用,以便将排序规则应用于列级别和表达式级别数据上的 nchar、nvarchar 和 ntext 数据类型。 它们不能与 COLLATE 子句一起使用以更改数据库或服务器实例的排序规则。

  • 如果指定的排序规则或者被引用的对象所使用的排序规则使用 Windows 不支持的代码页,则 数据库引擎 将显示错误。

建议

  • 您可以在 Windows 排序规则名称 (Transact-SQL)SQL Server 排序规则名称 (Transact-SQL) 中找到支持的排序规则名称,或者可以使用 sys.fn_helpcollations (Transact-SQL) 系统函数。

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

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

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

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

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

安全性

权限

  • CREATE DATABASE
    需要对 master 数据库的 CREATE DATABASE 权限,或需要 CREATE ANY DATABASE/ALTER ANY DATABASE 权限。

  • ALTER DATABASE
    需要对数据库具有 ALTER 权限。

用于“返回首页”链接的箭头图标[Top]

使用 SQL Server Management Studio

设置或更改数据库排序规则

  1. 在**“对象资源管理器”中,连接到 SQL Server 数据库引擎实例,再依次展开该实例、“数据库”**。

  2. 如果您正在创建一个新数据库,则右键单击**“数据库”,然后单击 “新建数据库”。 如果您不希望使用默认排序规则,则单击“选项”页,然后从“排序规则”**下拉列表中选择某一排序规则。

    或者,如果数据库已经存在,则右键单击所需数据库,然后单击**“属性”。 单击“选项”页,然后从“排序规则”**下拉列表中选择某一排序规则。

  3. 在完成后,单击**“确定”**。

用于“返回首页”链接的箭头图标[Top]

使用 Transact-SQL

设置数据库排序规则

  1. 连接到数据库引擎。

  2. 在标准菜单栏上,单击**“新建查询”**。

  3. 将以下示例复制并粘贴到查询窗口中,然后单击**“执行”**。 此示例演示如何使用 COLLATE 子句来指定排序规则名称。 此示例创建使用 Latin1_General_100_CS_AS_SC 排序规则的数据库 MyOptionsTest。 在创建数据库后,执行 SELECT 语句以验证设置。

USE master;
GO
IF DB_ID (N'MyOptionsTest') IS NOT NULL
DROP DATABASE MyOptionsTest;
GO
CREATE DATABASE MyOptionsTest
COLLATE Latin1_General_100_CS_AS_SC;
GO

--Verify the collation setting.
SELECT name, collation_name
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO

更改数据库排序规则

  1. 连接到数据库引擎。

  2. 在标准菜单栏上,单击**“新建查询”**。

  3. 将以下示例复制并粘贴到查询窗口中,然后单击**“执行”**。 此示例说明如何在 ALTER DATABASE 语句中使用 COLLATE 子句来更改排序规则名称。 执行 SELECT 语句以验证更改。

USE master;
GO
ALTER DATABASE MyOptionsTest
COLLATE French_CI_AS ;
GO

--Verify the collation setting.
SELECT name, collation_name
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO

用于“返回首页”链接的箭头图标[Top]

请参阅

参考

sys.fn_helpcollations (Transact-SQL)

sys.databases (Transact-SQL)

SQL Server 排序规则名称 (Transact-SQL)

Windows 排序规则名称 (Transact-SQL)

COLLATE (Transact-SQL)

排序规则优先级 (Transact-SQL)

CREATE TABLE (Transact-SQL)

CREATE DATABASE (Transact-SQL)

ALTER TABLE (Transact-SQL)

ALTER DATABASE (Transact-SQL)

概念

排序规则和 Unicode 支持