エクスポート (0) 印刷
すべて展開
このトピックはまだ評価されていません - このトピックを評価する

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

更新日: 2014年3月

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

Important重要
フェデレーションには、スケーラビリティと柔軟性のためのわずかなオプションが備わっています。SQL データベース でスケーラビリティと柔軟性を最大化する方法の詳細については、「Windows Azure SQL データベースのスケール アウト」を参照してください。

テーブル

フェデレーションには、フェデレーション テーブルと参照テーブルの両方を含めることができます。フェデレーション テーブルは、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 ステートメントを使用して確立されます。ステートメントは自動的に接続をフェデレーション内の適切なメンバーにルーティングするため、データにアクセスする際に物理データベース名を指定する必要はありません。フェデレーション ディストリビューション キーと値を指定すると、フェデレーション内の対応するメンバー データべースとの接続が確立されます。

セキュリティ プリンシパル

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

操作のコピー

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

データベースのサイズ クォータ

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

接続プロパティと Transact-SQL プロパティ

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

 

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

timestamp データ型と rowversion データ型

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

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

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

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

SQL データベース はローカル マシンからの 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 などの再分割操作後に、ユーザー定義のオブジェクト用に変更される場合があります。

フェデレーションにおけるデータベースの変更

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

参照

この情報は役に立ちましたか。
(残り 1500 文字)
フィードバックをいただき、ありがとうございました

コミュニティの追加

追加
表示:
© 2014 Microsoft. All rights reserved.