CREATE FEDERATION (Azure SQL データベース)

Azure AQL データベース で新しいフェデレーションを作成します。

重要

フェデレーションの現在の実装は、Web サービス層と Business サービス層で終了になります。スケーラビリティ、柔軟性、およびパフォーマンスを最大限に高めるには、カスタム シャーディング ソリューションの配置を検討してください。カスタム シャーディングの詳細については、「Azure SQL データベースのスケールアウト」を参照してください。

適用対象:Azure AQL データベース.

構文

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 パーティション分割のみがサポートされています。

説明

フェデレーション オブジェクトの使用により、テーブル コレクションのスケールアウトが可能です。 フェデレーションは、特定のテーブル コレクションのデータセット全体を含んでおり、データの分布に使用されるディストリビューション ポリシーとデータ型を定義します。

フェデレーションはどのデータベースでも作成でき、また 1 つのデータベース内に多数のフェデレーションを作成できます。 各フェデレーションは "all customer data" や "all order data" などの個別のテーブル コレクションを表し、各フェデレーション メンバーは通常、完全なデータセットのサブセットを含んでいます。 特殊なケースとして、フェデレーション メンバーが 1 つだけの場合、このメンバーにテーブル コレクション全体を含めることができます。

フェデレーションを作成すると、特定のデータ型の範囲全体をカバーする最初のメンバーも作成されます。 このフェデレーション メンバーは、master データベース内の標準のデータベースとして sys.databases に表示されます。 また、このフェデレーションを含んでいるユーザー データベースにも sys.federation_members システム ビューを通じて表示されます。 メンバーのデータベース名はランダムに生成されます。

範囲の分布において、range_low と range_high がフェデレーション メンバーの境界値を表します。 フェデレーション メンバーの場合、range_low は特定のメンバーのフェデレーション キーで許可される最小値に設定され、range_high は特定のメンバーのフェデレーション キーで許可される最大値 + 1 に設定されます。 特殊なケースとして、フェデレーション メンバーが 1 つだけの場合、range_low はフェデレーション キーのデータ型のドメインの最小値を表し、range_high は NULL で、最大値 + 1 を表します。 カバーされる範囲の間にギャップがあってはなりません。言い換えれば、範囲に含まれない値があってはなりません。 範囲のすべての有効値がフェデレーション メンバーによってカバーされます。 フェデレーション キーのデータ型を使用して、許可される値のドメインを指定します。 range_low の値は範囲に含まれますが、range_high の値は範囲に含まれません。 たとえば、フェデレーション メンバーの range_low の値が 100 で、range_high の値が 200 の場合、値 100 はフェデレーション メンバーに含まれますが、値 200 は含まれません。 範囲の最大値を含んでいるフェデレーション メンバーは、フェデレーション キーのデータ型のドメインの最大値を含んでおり、range_high の値として NULL を報告します。

重要

CREATE FEDERATION ステートメントがバッチ内の唯一のステートメントである必要があり、これは外側のトランザクションに含まれていてはなりません。外側のトランザクションが存在しない場合、エラー 266 が返されます。