Temps d’arrêt et pagination de requêteQuery timeout and pagination

Le service de Table prend en charge les deux types d'opération de requête suivants :The Table service supports the following two types of query operations:

  • L’opération Tables de requête renvoie la liste des tableaux dans le compte de stockage spécifié.The Query Tables operation returns the list of tables within the specified storage account. La liste des tables peut être filtrée selon les critères spécifiés dans la demande.The list of tables may be filtered according to criteria specified on the request.

  • L’opération Query Entities renvoie un ensemble d’entités à partir du tableau spécifié.The Query Entities operation returns a set of entities from the specified table. Les résultats de la requête peuvent être filtrés selon les critères spécifiés dans la demande.Query results may be filtered according to criteria specified on the request.

Une requête auprès du service de Table peut retourner un maximum de 1 000 éléments à la fois et peut s'exécuter pendant cinq secondes au maximum.A query against the Table service may return a maximum of 1,000 items at one time and may execute for a maximum of five seconds. Si le jeu de résultats contient plus de 1 000 éléments, si la requête ne s'est pas terminée dans les cinq secondes, ou si la requête traverse la limite de partition, la réponse inclut les en-têtes qui fournissent au développeur des jetons de continuation à utiliser pour continuer la requête au niveau de l'élément suivant dans le jeu de résultats.If the result set contains more than 1,000 items, if the query did not complete within five seconds, or if the query crosses the partition boundary, the response includes headers which provide the developer with continuation tokens to use in order to resume the query at the next item in the result set. Les en-têtes de jetons de continuation peuvent être retournés pour une opération De tables de requête ou une opération d’entités de requête.Continuation token headers may be returned for a Query Tables operation or a Query Entities operation.

Notez que la durée totale allouée à la demande pour planifier et gérer la requête est de 30 secondes, y compris les cinq secondes pour l'exécution de la requête.Note that the total time allotted to the request for scheduling and processing the query is 30 seconds, including the five seconds for query execution.

Il est possible qu'une requête ne retourne aucun résultat mais retourne quand même un en-tête de continuation.It is possible for a query to return no results but to still return a continuation header.

Les en-têtes de jeton de continuation sont indiqués dans le tableau suivant.The continuation token headers are shown in the following table.

En-tête de jeton de continuationContinuation token header DescriptionDescription
x-ms-continuation-NextTableName Cet en-tête est retourné dans le cadre d’une opération De Tables de requête.This header is returned in the context of a Query Tables operation. Si la liste des tables retournée n'est pas terminée, un hachage du nom de la table suivante dans la liste est inclus dans l'en-tête de jeton de continuation.If the list of tables returned is not complete, a hash of the name of the next table in the list is included in the continuation token header.
x-ms-continuation-NextPartitionKey Cet en-tête est retourné dans le cadre d’une opération De Requête Entities.This header is returned in the context of a Query Entities operation. L'en-tête contient un hachage de la clé de partition suivante à renvoyer dans une requête suivante sur la table.The header contains a hash of the next partition key to be returned in a subsequent query against the table.
x-ms-continuation-NextRowKey Cet en-tête est retourné dans le cadre d’une opération De Requête Entities.This header is returned in the context of a Query Entities operation. L'en-tête contient un hachage de la clé de ligne suivante à renvoyer dans une requête suivante sur la table.The header contains a hash of the next row key to be returned in a subsequent query against the table.

Notez que parfois, x-ms-continuation-NextRowKey peut être null.Note that in some instances, x-ms-continuation-NextRowKey may be null.

Pour récupérer les jetons de continuation et exécuter une requête suivante pour retourner la page suivante des résultats, inspectez d'abord les en-têtes de réponse à la recherche des jetons de continuation.To retrieve the continuation tokens and execute a subsequent query to return the next page of results, first inspect the response headers for continuation tokens. S'il n'existe aucun en-tête ou que les valeurs d'en-tête sont null, il n'existe aucune entité supplémentaire à renvoyer.If there are no headers or the header values are null, there are no additional entities to return.

Notes

Lorsque vous effectuez des demandes ultérieures qui incluent des jetons de continuation, assurez-vous de passer l’URI d’origine sur la demande.When making subsequent requests that include continuation tokens, be sure to pass the original URI on the request. Par exemple, si vous $filter $selectavez $top spécifié une option, ou une option de requête dans le cadre de la demande initiale, vous voudrez inclure cette option sur les demandes ultérieures.For example, if you have specified a $filter, $select, or $top query option as part of the original request, you will want to include that option on subsequent requests. Dans le cas contraire, vos demandes ultérieures peuvent rapporter des résultats inattendus.Otherwise your subsequent requests may return unexpected results.

Notez $top que l’option de requête dans ce cas spécifie le nombre maximum de résultats par page, et non le nombre maximum de résultats dans l’ensemble de l’ensemble de l’ensemble de la réponse.Note that the $top query option in this case specifies the maximum number of results per page, not the maximum number of results in the whole response set.

Voir les tables et entités de requête pour plus de détails.See Querying Tables and Entities for more details.

Si vous manipulez manuellement les jetons de continuation à l’aide de la bibliothèque client Microsoft .NET, lancez d’abord le résultat de l’opération de requête à un objet RequêteOperationResponse.If you are handling continuation tokens manually using the Microsoft .NET Client Library, first cast the result of the query operation to a QueryOperationResponse object. Vous pouvez ensuite accéder aux en-têtes symboliques QueryOperationResponse de continuation dans la propriété Headers de l’objet.You can then access the continuation token headers in the Headers property of the QueryOperationResponse object.

Après avoir récupéré les jetons de continuation, utilisez leurs valeurs pour construire une requête pour retourner la page suivante des résultats.After you have retrieved the continuation tokens, use their values to construct a query to return the next page of results. L'URI d'une requête d'interrogation peut prendre ces paramètres, qui correspondent aux en-têtes de jeton de continuation retournés avec la réponse :A query request URI may take these parameters, which correspond to the continuation token headers returned with the response:

  • NextTableName

  • NextPartitionKey

  • NextRowKey

Notes

Le temps total alloué à la demande de planification et de traitement d’une requête est de 30 secondes, dont cinq secondes pour l’exécution des requêtes.The total time allotted to the request for scheduling and processing a query is 30 seconds, including five seconds for query execution.

Si l’opération est un insert, mise à jour ou suppression de l’opération, l’opération peut avoir réussi sur le serveur en dépit d’une erreur retournée par le client.If the operation is an insert, update, or delete operation, the operation may have succeeded on the server despite an error being returned by the client. Cela peut se produire lorsque le délai d'expiration du client est défini à moins de 30 secondes, ce qui est le délai d'expiration maximal pour une opération d'insertion, de mise à jour ou de suppression.This may happen when the client timeout is set to less than 30 seconds, which is the maximum timeout for an insert, update, or delete operation.

Exemple d'en-têtes de réponse et de demande suivanteSample Response Headers and Subsequent Request

L'exemple de code suivant montre un ensemble d'en-têtes de réponse d'une requête d'entité sur une table nommée Customers qui retourne des en-têtes de continuation.The following code example shows a set of sample response headers from an entity query against a table named Customers that returns continuation headers. Les x-ms-continuation-NextPartitionKey x-ms-continuation-NextRowKey deux et sont retournés.Both x-ms-continuation-NextPartitionKey and x-ms-continuation-NextRowKey are returned.

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  

La demande de la page suivante des données peut être construite comme l'URI suivant :The request for the next page of data can be constructed like the following URI:

http://myaccount.table.core.windows.net/Customers?NextPartitionKey=1!8!U21pdGg-&NextRowKey=1!12!QmVuMTg5OA--  

 Voir aussiSee Also

S’attaquer aux ressources de service de table Addressing Table Service Resources
Opérations sur tables Operations on Tables
Opérations sur les entitésOperations on Entities