设置或更改数据库排序规则
本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2014 中设置和更改数据库排序规则。 如果未指定排序规则,则使用服务器排序规则。
本主题内容
开始之前:
若要设置或更改数据库排序规则,请使用:
开始之前
限制和局限
仅限 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 权限。
使用 SQL Server Management Studio
设置或更改数据库排序规则
在 “对象资源管理器” 中,连接到 SQL Server 数据库引擎的实例,再依次展开该实例、 “数据库” 。
如果您正在创建一个新数据库,则右键单击 “数据库” ,然后单击 “新建数据库” 。 如果您不希望使用默认排序规则,则单击 “选项” 页,然后从 “排序规则” 下拉列表中选择某一排序规则。
或者,如果数据库已经存在,则右键单击所需数据库,然后单击 “属性” 。 单击 “选项” 页,然后从 “排序规则” 下拉列表中选择某一排序规则。
在完成后,单击 “确定” 。
“使用 Transact-SQL”
设置数据库排序规则
连接到 数据库引擎。
在标准菜单栏上,单击 “新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后单击“执行” 。 此示例演示如何使用 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
更改数据库排序规则
连接到 数据库引擎。
在标准菜单栏上,单击 “新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后单击“执行” 。 此示例说明如何在 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)