セールス: 1-800-867-1380

データベース フェデレーションの管理 (Azure SQL データベース)

更新日: 2014年4月

Important重要
フェデレーションの現在の実装は、Web およびビジネス サービス層と共に提供が終了します。最大限のスケーラビリティ、柔軟性、およびパフォーマンスを実現するためには、カスタム シャーディングの展開を検討してください。カスタム シャーディングの詳細については、「Azure SQL データベースのスケール アウト」を参照してください。

Transact-SQL ステートメント、関数、ビューを使用して、フェデレーションを作成、変更、監視できます。このトピックはフェデレーションの管理について説明します。

各フェデレーションはルートと初期のフェデレーション メンバーで開始します。これらは CREATE FEDERATION ステートメントを使用して作成します。フェデレーションを作成したら、USE FEDERATION ステートメントを使用してフェデレーション ルートに接続し、FEDERATED ON 句が指定された CREATE TABLE を使用することによって、フェデレーション テーブル構造を作成できます。

フェデレーションをスケールアウトするには、ALTER FEDERATION ステートメントを使用して既存のフェデレーション メンバーを新しいメンバーに分割することができます。この SPLIT 操作では、操作の一部として指定されたフェデレーション キー値を使用して、分割するメンバーを識別します。フェデレーション メンバーは指定された値で分割されます。その結果、以前ソース メンバーに含まれていた行の総数を含む 2 つの新しいフェデレーション メンバーが生成されます。

また、ALTER FEDERATION を使用すると、DROP AT 操作を通じてフェデレーション メンバーの数を減らすこともできます。削除されたメンバーが扱っていたフェデレーション キー値の範囲は隣接するメンバーに移行されます。ただし、その範囲に関連付けられていたデータはこの操作によって保持されません。

noteメモ
CREATE DATABASE コマンドまたは DROP DATABASE コマンドを使用してフェデレーション メンバーを作成または削除することはできません。

DROP FEDERATION ステートメントを使用すると、フェデレーション (すべてのフェデレーション メンバーおよび関連するその他のメタデータと論理オブジェクトを含む) を削除できます。

また、ALTER DATABASE はフェデレーション メンバーで完全にサポートされています。

フェデレーション データを含む物理データベースに直接接続することは可能ですが、この方法では個々のメンバー データベース名の情報が必要であるため、最適な接続方法ではありません。USE FEDERATION ステートメントでは、フェデレーション ルートを使用してすべての接続をルーティングすることにより、接続が容易になります。また、個々のメンバー データベース名は必要なく、フェデレーション名とフェデレーション キーのみが必要となります。

WITH FILTERING=ON 句を使用して接続をフィルター選択することができるため、接続に対する操作の対象は、フェデレーション キー値に一致するフェデレーション アトミック ユニットのみになります。フィルター選択を有効にすると、クエリ プロセッサは、フェデレーション列のフェデレーション キー値を含む述語を、フェデレーション テーブルを参照するすべてのクエリに追加します。

Warning警告
フェデレーション アトミック ユニットはセキュリティ境界ではなく、クエリ プロセッサは、同じフェデレーション メンバー内のユニット間で情報が完全に分離されることを保証するものではありません。フィルター選択をセキュリティ分離メカニズムとして使用しないでください。

接続がフィルター選択されているかどうかを判断するため、sys.dm_exec_sessions から is_filtered 列が返されます。この列のデータ型は bit です。接続がフィルター選択されている場合は 1 が返され、それ以外の場合は 0 が返されます。接続がフィルター選択されている場合は、FEDERATION_FILTERING_VALUE を使用してフィルター選択値を決定できます。

フェデレーションを含むデータベースに対する認証は、フェデレーションのないデータベースに対する認証と同じです。ただし、ユーザーやロールなどのセキュリティ プリンシパルのセットアップはフェデレーション ルート データベースを対象とし、いずれかのフェデレーション メンバーに自動的にレプリケートされることはありません。

ログインのあるユーザーをフェデレーション メンバーに追加することはできません。代わりに、フェデレーション メンバーで作成したユーザー アカウントは、フェデレーション ルートの同じ名前のアカウントにリンクされます。フェデレーション メンバー内のロールは、フェデレーションされていないデータベースの場合と同様に管理されます。

最初のフェデレーション メンバーを作成する場合は、ステートメントを実行するアカウントがそのフェデレーション メンバーの所有者になります。フェデレーション ルートの既存のプリンシパルをフェデレーション メンバーに追加するには、データベース所有者が CREATE USER ステートメントを使用してフェデレーション メンバーにユーザーを作成し、ALTER USER ステートメントを使用してユーザーをフェデレーション ルート データベースの既存のプリンシパルにリンクする必要があります。ユーザー名は、フェデレーション ルートの sys.database_principals のプリンシパル名と正確に一致する必要があります。ユーザー以外のロールまたはその他の種類のプリンシパルにユーザーをリンクすることはできません。

noteメモ
ユーザー名がフェデレーション ルートの既存のプリンシパル名と正確に一致しない場合は、次のエラー メッセージが表示されてステートメントが失敗します。

'user_name' が有効な user_name でないか、権限がありません

フェデレーション ルート データベース内のユーザーとロールは、フェデレーションされていないデータベースの場合と同様に作成されます。

リンクされたユーザーは、フェデレーション メンバー内の通常のユーザー アカウントとして使用できます。これらは EXECUTE AS 句で使用したり、ロールに追加したりできます。リンクされたユーザーには信頼関係がなく、有効な dbchaining がないため、EXECUTE AS を使用する場合は WITH NO REVERT 句がサポートされません。

次の各ビューは、フェデレーション操作について説明しています。情報は、操作が実行されている限りこれらのビューによって報告され、操作の完了後、すぐに削除されます。

 

フェデレーション操作ビュー 説明

sys.dm_federation_operations

フェデレーション レベルの操作に関する情報を返します。

sys.dm_federation_operation_members

操作に関係するフェデレーション メンバーに関する情報を返します。

sys.dm_federation_operation_errors

フェデレーションの操作中に発生したエラーに関する情報を返します

sys.dm_federation_operation_error_members

エラーが発生した操作に関係するフェデレーション メンバーに関する情報を返します。

フェデレーション、メンバー、フェデレーション内で使用されるディストリビューション スキームを記述する追加のメタデータを次のビューから取得できます。また、sys.databases は、Is_federation_member という名前の列を返します。この列には、データベースがフェデレーション メンバーであるかどうかを示すビット値が格納されています。

 

フェデレーション メタデータ テーブル 説明

sys.federations

データベース内のフェデレーションを返します。

sys.federation_members

フェデレーション内のフェデレーション メンバーを返します。

sys.federation_distributions

フェデレーションで使用される分布タイプとデータ型を返します。

sys.federation_member_distributions

フェデレーション メンバーで扱われる分布名と範囲を返します。

sys.federated_table_columns

フェデレーション テーブルに関するフェデレーション固有の情報を返します。

フェデレーション履歴ビューを使用すると、フェデレーション操作に関する履歴情報を取得できます。この情報を使って、任意の時点におけるフェデレーション ルートとフェデレーション メンバーの情報 (メンバーの対象範囲を含む) を再構築できます。フェデレーション履歴ビューは次のとおりです。

 

フェデレーション履歴テーブル 説明

sys.federation_history

フェデレーションに関する履歴情報を返します。

sys.federation_member_history

フェデレーション メンバーに関する履歴情報を返します。

sys.federation_distribution_history

フェデレーションの分布タイプとデータ型に関する履歴情報を返します。

sys.federation_member_distribution_history

フェデレーション メンバーで扱われる範囲に関する履歴情報を返します。

関連項目

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