CREATE FEDERATION (Azure SQL Database)

在 Azure SQL Database 中创建新联合。

重要说明重要提示

联合的当前实现将随着 Web 和 Business 服务层停用。请考虑部署自定义分片解决方案以最大程度提高可伸缩性、灵活性和性能。有关自定义分片的详细信息,请参阅向外扩展 Azure SQL Database

适用范围:Azure SQL Database.

语法

CREATE FEDERATION
    federation_name { <federation_distribution_scheme> }

<federation_distribution_scheme> ::= 
    <federation_distribution>

<federation_distribution> ::=
     ( distribution_name <data_type> RANGE )

<data_type> ::= 
     [system_type_name . ] type_name  

参数

  • federation_name
    要创建的联合的名称。 该名称在 内必须唯一,必须符合标识符规则并且类型为 sysname。

  • distribution_name
    联合键的名称。 名称是用于指示联合键的标识符,并与联合相关语句(如 CREATE TABLE … FEDERATED ON(...) 或 USE FEDERATION)一起引用。 Distribution_name 必须符合标识符规则且类型为 sysname。

  • type_name
    联合键类型的类型名称。 类型必须是 int、bigint、uniqueidentifier 或 varbinary(n),其中,n 最大可为 900。

  • RANGE
    分区的类型。 仅支持 RANGE 分区。

注释

联合对象允许向外扩展表集合。 联合包含给定表集合的整个数据集,并定义要用于分发数据的分发策略和数据类型。

可以在任何数据库中创建联合,一个数据库中可能有许多联合。 每个联合表示表的单独集合(如“所有客户数据”或“所有订单数据”),每个联合通常包含完整数据集的一个子集。 在单一联合成员的特殊情况下,单一成员可能包含整个表集合。

在创建联合时,也将创建涵盖指定数据类型的完整范围的第一个成员。 这个联合成员在 sys.databases 中显示为 master 数据库中的一个常规数据库。 它还通过 sys.federation_members 系统视图出现在包含联合的用户数据库中。 成员数据库名称是随机生成的。

对于范围分发,range_low 和 range_high 表示联合成员的界限值。 对于联合成员,range_low 设置为给定成员的联合键中允许的最小值,range_high 设置为给定成员的联合键中允许的最大值 +1。 在单一联合成员的特殊情况下,range_low 表示联合键数据类型的域的最小值,而 range_high 为 NULL 以表示最大值 +1。 范围在此范围的涵盖范围内不能有间隙;范围内不能缺少值。 联合成员涵盖范围的每个有效值。 联合键数据类型用于指定允许的值域。 范围内包含 range_low 值,但不包括 range_high。 例如,如果联合成员的 range_low 为 100,而 range_high 为 200,则值 100 包含在联合内,但 200 不包含在联合内。 包含范围的最大值的联合成员包括联合键数据类型域的最大值,并将 NULL 报告为 range_high 值。

重要说明重要提示

CREATE FEDERATION 语句必须是批处理中的唯一语句,而不能是外部事务的一部分。如果存在外部事务,将返回错误 226。