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

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

本主题内容

开始之前

限制和局限

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

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

建议

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

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

    • 将系统表中的任何 charvarchartextncharnvarcharntext 列更改为使用新的排序规则。

    • 将存储过程和用户定义函数的所有现有 charvarchartextncharnvarcharntext 参数和标量返回值更改为使用新的排序规则。

    • charvarchartextncharnvarcharntext 系统数据类型和基于这些系统数据类型的所有用户定义的数据类型更改为使用新的默认排序规则。

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

安全性

权限

CREATE DATABASE
需要 MASTER 数据库中的 CREATE DATABASE 权限,或者需要 CREATE ANY DATABASE 或 ALTER ANY DATABASE 权限。

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

使用 SQL Server Management Studio

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

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

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

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

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

“使用 Transact-SQL”

设置数据库排序规则

  1. 连接到 数据库引擎。

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

  3. 将以下示例复制并粘贴到查询窗口中,然后单击“执行” 。 此示例演示如何使用 COLLATE 子句来指定排序规则名称。 此示例创建使用 MyOptionsTest 排序规则的数据库 Latin1_General_100_CS_AS_SC 。 在创建数据库后,执行 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  
  

另请参阅

排序规则和 Unicode 支持
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 (SQL Server Transact-SQL)
ALTER TABLE (Transact-SQL)
ALTER DATABASE (Transact-SQL)