Partager via


Délai d’expiration et pagination des requêtes

Le service de Table prend en charge les deux types d'opération de requête suivants :

  • L’opération Query Tables retourne la liste des tables dans le compte de stockage spécifié. La liste des tables peut être filtrée selon les critères spécifiés dans la demande.

  • L’opération Query Entities retourne un ensemble d’entités à partir de la table spécifiée. Les résultats de la requête peuvent être filtrés selon les critères spécifiés dans la demande.

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. 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. Les en-têtes de jeton de continuation peuvent être retournés pour une opération Tables de requête ou une opération d’entités de requête .

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.

Il est possible qu'une requête ne retourne aucun résultat mais retourne quand même un en-tête de continuation.

Les en-têtes de jeton de continuation sont indiqués dans le tableau suivant.

En-tête de jeton de continuation Description
x-ms-continuation-NextTableName Cet en-tête est retourné dans le contexte d’une opération De tables de requête . 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.
x-ms-continuation-NextPartitionKey Cet en-tête est retourné dans le contexte d’une opération d’entités de requête . L'en-tête contient un hachage de la clé de partition suivante à renvoyer dans une requête suivante sur la table.
x-ms-continuation-NextRowKey Cet en-tête est retourné dans le contexte d’une opération d’entités de requête . L'en-tête contient un hachage de la clé de ligne suivante à renvoyer dans une requête suivante sur la table.

Notez que parfois, x-ms-continuation-NextRowKey peut être 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. 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.

Notes

Lorsque vous effectuez des requêtes suivantes qui incluent des jetons de continuation, veillez à passer l’URI d’origine sur la demande. Par exemple, si vous avez spécifié une $filteroption de requête , $selectou $top dans le cadre de la demande d’origine, vous devez inclure cette option sur les demandes suivantes. Sinon, vos demandes ultérieures peuvent retourner des résultats inattendus.

Notez que l’option $top de requête dans ce cas spécifie le nombre maximal de résultats par page, et non le nombre maximal de résultats dans l’ensemble du jeu de réponses.

Pour plus d’informations, consultez Interrogation de tables et d’entités .

Si vous gérez manuellement les jetons de continuation à l’aide de la bibliothèque de client Microsoft .NET, commencez par convertir le résultat de l’opération de requête en objet QueryOperationResponse . Vous pouvez ensuite accéder aux en-têtes de jeton de continuation dans la propriété Headers de l’objet QueryOperationResponse .

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. 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 :

  • NextTableName

  • NextPartitionKey

  • NextRowKey

Notes

Le temps total alloué à la demande pour la planification et le traitement d’une requête est de 30 secondes, dont cinq secondes pour l’exécution de la requête.

Si l’opération est une opération d’insertion, de mise à jour ou de suppression, l’opération a peut-être réussi sur le serveur malgré une erreur retournée par le 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.

Exemple d'en-têtes de réponse et de demande suivante

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. x-ms-continuation-NextRowKey Et x-ms-continuation-NextPartitionKey sont retournés.

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 :

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

Voir aussi

Ressources du service table d’adressage
Opérations sur les tables
Opérations sur les entités