このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
エクスポート (0) 印刷
すべて展開

フェデレーションのガイドラインと制限事項

更新日: 2015年1月

このトピックでは、Microsoft Azure SQL データベース でのフェデレーションのガイドラインと制限事項について説明します。一般的なガイドラインと制限事項は、以下の各セクションで説明しています。

Important重要
フェデレーションの現在の実装は、Web およびビジネス サービス層で廃止される予定です。Azure SQL Database でシャーディングされたスケールアウト ソリューションを構築するには、Elastic Scale for Azure SQL Database の使用を検討してください。この機能を試すには、「Azure SQL Database Elastic Scale Preview の概要」を参照してください。

フェデレーションには、フェデレーション テーブルと参照テーブルの両方を含めることができます。フェデレーション テーブルは、FEDERATED ON 句を使用して作成されルテーブルであり、含む側のフェデレーションのディストリビューション キーに関連付けられた列が含まれています。参照テーブルは、FEDERATED ON 句を使用せずに作成されたフェデレーション内のテーブルであり、フェデレーション ディストリビューション キーとの特別な関連はありません。テーブルの作成についての詳細は、「CREATE TABLE」を参照してください。

フェデレーション テーブルには次の制限があります。

  • フェデレーション テーブルのフェデレーション列には、フェデレーション メンバーの range_low を含み、range_high を含まない範囲に一致するデータのみ含めることができます。

  • フェデレーション列のデータ型は、フェデレーション定義で定義されたデータ型と正確に一致にしている必要があります。

  • フェデレーション テーブルにあるすべての一意のクラスター化インデックスに、フェデレーション列が含まれている必要があります。インデックス内のフェデレーション列の順序は、フェデレーション内のキー序数と異なっていてもかまいません。

  • フェデレーション列の値を、フェデレーション メンバーの範囲外の値に更新することはできません。

  • フェデレーション列を、保存される計算列または保存されない計算列にすることはできません。

  • インデックス付きビューは、フェデレーション メンバーではサポートされていません。

  • フェデレーション列は NULL にできません。

  • フェデレーション テーブルのすべての外部キー制約には、外部キーの序数が同じである、参照する側のテーブルおよび参照される側のテーブルの両方にあるフェデレーション列が含まれている必要があります。参照テーブルに、フェデレーション テーブルとの外部キー関係を追加することはできません。フェデレーション テーブルには、参照テーブルとの外部キー関係を制限なしで追加できます。

  • 通常は、FEDERATED ON 句で作成したテーブルを削除することができます。ALTER TABLE を使用すると、フェデレーション キーなどのフェデレーション属性を除いて、フェデレーション テーブルのすべてのプロパティを変更することもできます。参照テーブルをフェデレーション テーブルに、またはフェデレーション テーブルを参照テーブルに変更するには、必要なプロパティを持つテーブルを新たに作成し、既存のテーブルを削除する必要があります。

  • テーブルが STATISTICS_NORECOMPUTE とマークされている場合、SPLIT などのフェデレーション操作によって統計が無効化または再計算されることはありません。この結果、SPLIT などの再分割操作の後に実行プランの問題が生じることがあります。

  • フェデレーション メンバーでは、ID プロパティはサポートされません

  • フェデレーション メンバーでは、timestamp データ型と rowversion データ型はサポートされません

フェデレーション テーブルのすべての一般的なテーブル メタデータは、標準システム ビューで確認できます。フェデレーション固有のプロパティは、sys.federated_table_columns にあります。

参照テーブルはすべてのフェデレーション メンバー間に自動的に分散されません。参照テーブルは、フェデレーションのメンバー間で手動でレプリケートできますが、自動レプリケーション プロセスはありません。

参照テーブルには、多くの場合フェデレーション テーブルに対するクエリのサポート情報が含まれているため、複数のデータベースに対してクエリを実行する必要がありません。たとえば、顧客情報をフェデレーションして複数のメンバー データベース間で分散することができますが、都道府県と郵便番号の参照情報のフェデレーションから得られるものは何もありません。しかし、クエリが複数のデータベースにまたがらなくてもよいように、都道府県と郵便番号の情報のコピーを各フェデレーション メンバーに保存することができます。

geography 型や geometry 型は、テーブルがフェデレーションされる列のデータ型には使用できませんが、フェデレーション テーブルに含めることはできます。フェデレーションで空間データを使用する際、他に制限事項はありません。

SPLIT 操作または DROP 操作を実行すると、空間インデックスは、対象のフェデレーション メンバーで一貫して維持されます。

hierarchyid 型は、テーブルがフェデレーションされる列のデータ型には使用できませんが、フェデレーション テーブルに含めることはできます。フェデレーションで hierarchyid 型を使用する際、他に制限事項はありません。

SPLIT 操作または DROP 操作を実行すると、hierarchyid インデックスは、対象のフェデレーション メンバーで一貫して維持されます。

フェデレーションへの接続は、USE FEDERATION ステートメントを使用して確立されます。ステートメントは自動的に接続をフェデレーション内の適切なメンバーにルーティングするため、データにアクセスする際に物理データベース名を指定する必要はありません。フェデレーション ディストリビューション キーと値を指定すると、フェデレーション内の対応するメンバー データべースとの接続が確立されます。

フェデレーションを含むデータベースに対する認証および承認は、通常と同じように行われます。ログインとユーザーにより接続が指定され、ロールによりプリンシパルのグループが管理されます。ただし、フェデレーションが含まれるデータベース内のプリンシパルは、フェデレーション ルート データベースのみを対象とし、フェデレーション メンバーに自動的に適用されることはありません。ユーザーとロールの詳細については、「データベース フェデレーションの管理 (Azure SQL データベース)」を参照してください。

データベース コピーは、フェデレーションを含むデータベースに対して実行することはできません。データベースのコピー操作がデータベースでアクティブになっていると、フェデレーションの作成に失敗します。データベース コピーは、フェデレーション メンバーに対しても実行することはできません。

フェデレーション操作は、フェデレーション ルート クォータには適用されません。ルート データベースがクォータを超過しても、SPLIT 操作や DROP 操作は引き続き実行できます。同様に、フェデレーション メンバーのサイズ クォータを超過した場合でも、対象データベースのクォータが操作によって超過していない限り、SPLIT 操作または DROP 操作を実行できます。

SPLITDROP などの再分割操作が完了すると、接続は切断されます。これは、SET オプション、トランザクション分離レベルの設定、変数などの接続プロパティもリセットされることを意味します。SPLIT 操作では新しい物理データベースが作成されます。これは、次の Transact-SQL プロパティが SPLIT 操作で維持されないことを意味します。

 

Transact-SQL SQL Database に移動 でのサポートの制限 フェデレーションにおけるデータベースのサポート

timestamp データ型と rowversion データ型

SQL Database に移動 では、現在のデータベースのコミットされていない timestamp 値 (DBTS) および rowversion 値がフェールオーバー間で維持されない場合があります。

timestamp データ型および rowversion データ型は、フェデレーション メンバーではサポートされていません。

@@dbt などの timestamp や rowversion に関連する関数は、タイムスタンプや行バージョンが指定したデータベースに存在しない場合に値を返します。

SYSUTCDATETIME()、SYSDATETIMEOFFSET()、SYSDATETIME()、getdate()、getutcdate()current_timestamp

SQL Database に移動 はローカル コンピューターからの timestamp と rowversion をレポートしたり、フェールオーバー間の将来または過去の時間をレポートする場合があります。

再分割操作間で同じ制限付きでサポートされます。

DATABASE_PRINCIPAL_ID()

プリンシパル SID は、指定したプリンシパル名のフェデレーション メンバーやフェデレーション ルートにまたがって同じであることが保証されます。ただし、プリンシパル ID は DROP などの再分割操作後に変更される場合があります。

列での IDENTITY プロパティ

IDENTITY プロパティは、フェデレーション メンバーではサポートされていません。IDENT_CURRENT、IDENT_SEED、IDENT_INCR、SCOPE_IDENTITY など、ID に関連した関数は、ID 列がフェデレーション メンバーに存在できないため、常に NULL を返します。

ユーザー定義のオブジェクト object_id(…)、object_name(object_id)、type_id(…)、type_name(type_id) を操作する OBJECT_ID および関連する関数

任意のオブジェクトの object_id は、DROP などの再分割操作後に、ユーザー定義のオブジェクト用に変更される場合があります。

すべての Azure SQL データベース データベース設定はサポートされますが、フェデレーション ルート データベースのオプションの値に対する変更は、フェデレーション メンバーのオプションを変更しません。

関連項目

表示:
© 2015 Microsoft