排序规则基于特定语言和区域设置的准则,指定如何对字符串数据进行排序和比较的规则。
SQL Server Compact 提供了对 Windows 排序规则的支持。有关 SQL Server Compact 中支持的 Windows 排序规则名称的列表,请参阅支持的排序规则 (SQL Server Compact)。
从 SQL Server Compact 3.5 Service Pack 1 (SP1) 版本开始,SQL Server Compact 支持区分大小写的排序规则。在数据库级别设置是否区分大小写。换句话说,数据库的用户表中的所有字符串列(数据类型为 nchar、nvarchar 和 ntext 的列)具有与在数据库级别所指定的设置相同的区分大小写设置。此外,字符串列上的索引具有与在数据库级别所指定的设置相同的区分大小写设置。
但是,在 SQL Server Compact 数据库中不将对象名称(如表名)、语言关键字、函数和视图视为区分大小写,即使排序规则区分大小写。此功能与 SQL Server 不一致,但是此行为与指定数据库的排序规则仅用于用户数据比较的 SQL 标准一致。
连接到区分大小写的数据库
可以连接到任何区分大小写的 SQL Server Compact 数据库,就像连接到任何其他 SQL Server Compact 数据库。
从 SQL Server Compact 3.5 SP1 版本开始,SQL Server Compact 提供对新的 Boolean 连接字符串属性“Case Sensitive”或“SSCE:Case Sensitive”的支持,以确定数据库排序规则是否区分大小写。如果尝试连接到在连接字符串中包含“Case Sensitive”属性的现有 SQL Server Compact 数据库,则 SQL Server Compact 3.5 SP1 忽略此设置。换句话说,“Case Sensitive”属性是一个数据库创建时选项,连接到现有数据库时将忽略它。 如果在创建数据库时不指定区分大小写,则默认情况下将创建不区分大小写的数据库。
“Case Sensitive”属性是 SQL Server Compact 3.5 SP1 中引入的新增功能,任何早期版本都不支持它。
创建区分大小写的数据库
SQL Server Compact 仅支持通过 API 调用为新数据库指定区分大小写的排序规则。 只有 SQL Server Compact 3.5 SP1 和更高版本才支持此功能。
可以使用新的 Boolean 连接字符串属性“Case Sensitive”或“SSCE:Case Sensitive”确定数据库排序规则是否区分大小写。对于本机编程,作为 DBPROPSET_SSCE_DBINIT 属性集一部分的新属性 DBPROP_SSCE_DBCASESENSITIVE 确定数据库排序规则是否区分大小写。
将 Case Sensitive 设置为 true 时,将在数据库中重新生成字符串列上的索引。
还可以通过使用 CREATE DATABASE (SQL Server Compact) 语句的 COLLATE (SQL Server Compact) 子句为新数据库指定排序规则。但是,在这种情况下,不区分大小写 (CI) 选项是唯一受支持的选项。
重要
如果使用区分大小写的排序规则创建数据库,则任何以前的 SQL Server Compact 版本(包括 SQL Server Compact 3.5)都无法打开该数据库。
合并复制和区分大小写的排序规则
SQL Server 发布服务器和 SQL Server Compact 订阅服务器支持合并复制,而不管区分大小写设置如何。为了支持向后兼容性,未显式阻止任何方案。
SQL Server Compact 3.5 的 SP1 版本支持根据区分大小写和不区分大小写的服务器数据库复制区分大小写的 SQL Server Compact 数据库。下表介绍所有可能的方案:
SQL Server Compact 客户端数据库区分大小写 |
SQL Server 数据库区分大小写 |
支持 |
---|---|---|
CI(不区分大小写) |
CI |
是 |
CI |
CS(区分大小写) |
是 |
CS |
CS |
是 |
CS |
CI |
是 |
有关合并复制的详细信息,请参阅使用合并复制。有关如何使用 Replication 对象创建区分大小写的数据库的详细信息,请参阅如何使用 Replication 对象创建数据库(以编程方式)。