適用対象:Azure SQL データベース
スケーラブルなクラウド データベースの構築では、3 種類の資格情報を使用してシャード マップ マネージャーにアクセスします。 必要に応じて、最低レベルのアクセスが可能な資格情報を使用します。
- 管理の資格情報: シャード マップ マネージャーを作成または操作します (用語集をご覧ください)。
- アクセス資格情報: 既存のシャード マップ マネージャーにアクセスして、シャードに関する情報を取得します。
- 接続の資格情報: シャードに接続します。
詳細については、「 Azure SQL Database へのデータベース アクセスの承認」を参照してください。
管理資格情報について
管理資格情報は、シャード マップを操作するアプリケーションの ShardMapManager (Java、 .NET) オブジェクトを作成するために使用されます。 (例については、「Elastic Database ツールを使用してシャードを追加する」および「データ依存ルーティング」をご覧ください)。 エラスティック スケール クライアント ライブラリのユーザーは、SQL ユーザーと SQL ログインを作成し、グローバル シャード マップ データベースとすべてのシャード データベースに対する読み取り/書き込みアクセス許可が各ユーザーに付与されていることを確認する必要があります。 これらの資格情報は、シャード マップに変更を加えるときにグローバル シャード マップとローカル シャード マップを維持するために使用されます。 たとえば、管理資格情報を使用してシャード マップ マネージャー オブジェクトを作成します ( GetSqlShardMapManager (Java、 .NET) を使用)。
// Obtain a shard map manager.
ShardMapManager shardMapManager = ShardMapManagerFactory.GetSqlShardMapManager(smmAdminConnectionString,ShardMapManagerLoadPolicy.Lazy);
smmAdminConnectionString変数は、管理資格情報を含む接続文字列です。 ユーザー ID とパスワードにより、シャード マップ データベースと個々のシャードの両方に対する読み取り/書き込みアクセスが提供されます。 管理接続文字列には、グローバル シャード マップ データベースを識別するためのサーバー名とデータベース名も含まれます。 その目的の一般的な接続文字列を次に示します。
"Server=<yourserver>.database.windows.net;Database=<yourdatabase>;User ID=<yourmgmtusername>;Password=<yourmgmtpassword>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
"username@server" の形式の値は使用しないでください。代わりに、単に "username" 値を使用してください。 これは、シャード マップ マネージャー データベースと個々のシャードの両方に対して資格情報が機能する必要があるためです。これは、異なるサーバー上に存在する可能性があるためです。
資格情報にアクセスする
シャード マップを管理しないアプリケーションでシャード マップ マネージャーを作成する場合は、グローバル シャード マップに対する読み取り専用アクセス許可を持つ資格情報を使用します。 これらの資格情報の下でグローバル シャード マップから取得される情報は、データ依存ルーティングの目的と、クライアント上のシャード マップ キャッシュを設定するために使用されます。 資格情報は、同じ呼び出しパターンを使用して GetSqlShardMapManager に提供されます。
// Obtain shard map manager.
ShardMapManager shardMapManager = ShardMapManagerFactory.GetSqlShardMapManager(smmReadOnlyConnectionString, ShardMapManagerLoadPolicy.Lazy);
smmReadOnlyConnectionStringを使用して、管理者以外のユーザーに代わってこのアクセスに対して異なる資格情報を使用することを反映します。これらの資格情報は、グローバル シャード マップに対する書き込みアクセス許可を提供すべきではありません。
接続の資格情報
OpenConnectionForKey (Java、.NET) メソッドを使用してシャーディング キーに関連付けられているシャードにアクセスする場合は、追加の資格情報が必要です。 これらの資格情報は、シャード上に存在するローカル シャード マップ テーブルへの読み取り専用アクセス許可を提供する必要があります。 これは、シャード上でのデータ依存ルーティングのための接続検証を行う場合に必要になります。 次のコード スニペットは、データ依存ルーティングのコンテキストでデータ アクセスを許可します。
using (SqlConnection conn = rangeMap.OpenConnectionForKey<int>(targetWarehouse, smmUserConnectionString, ConnectionOptions.Validate))
この例では、 smmUserConnectionString はユーザー資格情報の接続文字列を保持します。 Azure SQL Database の場合、ユーザー資格情報の一般的な接続文字列を次に示します。
"User ID=<yourusername>; Password=<youruserpassword>; Trusted_Connection=False; Encrypt=True; Connection Timeout=30;"
管理者の資格情報と同様に、 username@serverの形式で値を使用しないでください。 代わりに、 usernameを使用してください。 また、接続文字列にサーバー名とデータベース名が含まれていないことにも注意してください。 これは、 OpenConnectionForKey 呼び出しによって、キーに基づいて接続が正しいシャードに自動的に転送されるためです。 そのため、データベース名とサーバー名は指定されません。
関連するコンテンツ
まだ弾力性データベース ツールを使用していない場合は、 ファースト ステップ ガイドを参照してください。 ご質問がある場合は、SQL Database に関する Microsoft Q&A 質問ページを参照してください。機能に関するご要望は、SQL Database に関するフィードバック フォーラムで新しいアイデアを追加したり、既存のアイデアに投票したりしてください。