クエリのタイムアウトと改ページ位置の設定
Table Service では次の 2 種類のクエリ操作をサポートしています。
クエリ テーブル操作は、指定されたストレージ アカウント内のテーブルの一覧を返します。 テーブルの一覧は、要求に指定した条件に従ってフィルター処理できます。
Query Entities 操作は、指定されたテーブルからエンティティのセットを返します。 クエリの結果は、要求に指定した条件に従ってフィルター処理できます。
Table Service に対するクエリは最長 5 秒間実行され、一度に最大 1,000 個の項目が返されます。 返される項目数が 1,000 個を超える場合、クエリが 5 秒以内に終了しない場合、またはクエリがパーティション境界を超える場合は、結果セット内の次の項目からクエリを再開するために使用する継続トークンを含むヘッダーが応答に含まれます。 継続トークン ヘッダーは、 クエリ テーブル 操作または クエリ エンティティ 操作に対して返される場合があります。
クエリのスケジュール設定および処理用として要求に割り当てられる時間は、クエリの実行に要する 5 秒を含め、合計で 30 秒間です。
クエリで結果が返されず、継続ヘッダーのみが返される場合もあります。
継続トークン ヘッダーを次の表に示します。
継続トークン ヘッダー | Description |
---|---|
x-ms-continuation-NextTableName |
このヘッダーは、 クエリ テーブル 操作のコンテキストで返されます。 テーブル一覧の一部のみが返された場合は、一覧内の次のテーブルの名前のハッシュが継続トークン ヘッダーに含まれます。 |
x-ms-continuation-NextPartitionKey |
このヘッダーは、 クエリ エンティティ 操作のコンテキストで返されます。 このヘッダーには、テーブルに対する後続のクエリで返される次のパーティション キーのハッシュが含まれます。 |
x-ms-continuation-NextRowKey |
このヘッダーは、 クエリ エンティティ 操作のコンテキストで返されます。 このヘッダーには、テーブルに対する後続のクエリで返される次の行キーのハッシュが含まれます。 一部のインスタンスでは、 x-ms-continuation-NextRowKey が null になる場合があります。 |
継続トークンを取得し、後続のクエリを実行して結果の次のページを取得するには、まず応答ヘッダーの継続トークンを確認します。 ヘッダーが存在しないか、ヘッダーの値が null
の場合、それ以上返されるエンティティはありません。
注意
継続トークンを含む後続の要求を行う場合は、要求で元の URI を渡してください。 たとえば、元の要求の一部として 、$select
、または $top
クエリ オプションを指定$filter
した場合は、後続の要求にそのオプションを含める必要があります。 そうしないと、後続の要求で予期しない結果が返される可能性があります。
この場合の $top
クエリ オプションは、応答セット全体の結果の最大数ではなく、ページあたりの結果の最大数を指定します。
詳細については、「 テーブルとエンティティのクエリ 」を参照してください。
Microsoft .NET クライアント ライブラリを使用して継続トークンを手動で処理する場合は、最初にクエリ操作の結果を QueryOperationResponse オブジェクトにキャストします。 その後、オブジェクトの Headers プロパティで継続トークン ヘッダーに QueryOperationResponse
アクセスできます。
継続トークンを取得した後、その値を使用して、結果の次のページを取得するクエリを作成します。 クエリの要求 URI で次のパラメーターを指定できます。これらのパラメーターは応答で返される継続トークン ヘッダーに対応します。
NextTableName
NextPartitionKey
NextRowKey
注意
クエリのスケジュール設定と処理の要求に割り当てられる合計時間は 30 秒です。これには、クエリの実行に 5 秒が含まれます。
操作が挿入、更新、または削除の操作である場合、クライアントからエラーが返されたにもかかわらず、サーバーで操作が成功した可能性があります。 このような現象は、クライアントのタイムアウトが挿入、更新、または削除操作の最大タイムアウト値である 30 秒より短い時間に設定されている場合に起こることがあります。
応答ヘッダーと後続の要求の例
次のコード例は、Customers という名前のテーブルに対するエンティティ クエリから返される、継続ヘッダーを含む応答ヘッダーの例を示しています。 この例では x-ms-continuation-NextPartitionKey
と x-ms-continuation-NextRowKey
が返されています。
Date: Mon, 27 Jun 2016 20:11:08 GMT
Content-Type: application/json;charset=utf-8
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
Cache-Control: no-cache
x-ms-request-id: f9b2cd09-4dec-4570-b06d-4fa30179a58e
x-ms-version: 2015-12-11
x-ms-continuation-NextPartitionKey: 1!8!U21pdGg-
x-ms-continuation-NextRowKey: 1!8!QmVuOTk5
Content-Length: 880298
次のページのデータを要求するには、次のような URI を指定します。
http://myaccount.table.core.windows.net/Customers?NextPartitionKey=1!8!U21pdGg-&NextRowKey=1!12!QmVuMTg5OA--