Freigeben über


Abfragetimeout und Paginierung

Der Tabellendienst unterstützt die folgenden beiden Arten von Abfrageoperationen:

  • Der Vorgang Abfragetabellen gibt die Liste der Tabellen innerhalb des angegebenen Speicherkontos zurück. Die Liste der Tabellen wird gemäß den in der Anforderung angegebenen Kriterien gefiltert.

  • Der Vorgang Abfrageentitäten gibt einen Satz von Entitäten aus der angegebenen Tabelle zurück. Die Abfrageergebnisse können gemäß den in der Anforderung angegebenen Kriterien gefiltert werden.

Eine Abfrage für den Tabellendienst kann maximal 1.000 Elemente gleichzeitig zurückgeben und für maximal fünf Sekunden ausgeführt werden. Wenn das Resultset mehr als 1.000 Elemente enthält, die Abfrage nicht innerhalb von fünf Sekunden abgeschlossen wurde oder die Abfrage die Partitionsbegrenzung überschreitet, enthält die Antwort Header, die dem Entwickler Fortsetzungstoken zur Verfügung stellen, um die Abfrage mit dem nächsten Element im Resultset fortzusetzen. Fortsetzungstokenheader können für einen Abfragetabellenvorgang oder einen Abfrageentitätenvorgang zurückgegeben werden.

Beachten Sie, dass die zugewiesene Gesamtzeit für die Anforderung zum Planen und Verarbeiten der Abfrage 30 Sekunden beträgt, einschließlich der fünf Sekunden für die Abfrageausführung.

Eine Abfrage kann u. U. keine Ergebnisse, aber einen Fortsetzungsheader zurückgeben.

Die Header von Fortsetzungstoken sind in der folgenden Tabelle dargestellt.

Header des Fortsetzungstokens BESCHREIBUNG
x-ms-continuation-NextTableName Dieser Header wird im Kontext eines Abfragetabellenvorgangs zurückgegeben. Wenn die zurückgegebene Liste der Tabellen nicht vollständig ist, wird in den Header des Fortsetzungstokens ein Hash des mit dem Namen der folgenden Tabelle in der Liste eingefügt.
x-ms-continuation-NextPartitionKey Dieser Header wird im Kontext eines Abfrageentitätenvorgangs zurückgegeben. Der Header enthält einen Hash des nächsten Partitionsschlüssels, der in einer nachfolgenden Abfrage für die Tabelle zurückgegeben werden soll.
x-ms-continuation-NextRowKey Dieser Header wird im Kontext eines Abfrageentitätenvorgangs zurückgegeben. Der Header enthält einen Hash des nächsten Zeilenschlüssels, der in einer nachfolgenden Abfrage für die Tabelle zurückgegeben werden soll.

In manchen Fällen kann x-ms-continuation-NextRowKeynull sein.

Um die Fortsetzungstoken abzurufen und eine nachfolgende Abfrage auszuführen, um die nächste Ergebnisseite zurückzugeben, prüfen Sie zunächst die Antwortheader auf Fortsetzungstoken. Wenn keine Header vorhanden oder die Headerwerte null sind, können keine weiteren Entitäten zurückgegeben werden.

Hinweis

Wenn Sie nachfolgende Anforderungen ausführen, die Fortsetzungstoken enthalten, stellen Sie sicher, dass Sie den ursprünglichen URI für die Anforderung übergeben. Wenn Sie beispielsweise eine $filterAbfrageoption , $selectoder $top als Teil der ursprünglichen Anforderung angegeben haben, sollten Sie diese Option in nachfolgende Anforderungen einschließen. Andernfalls können ihre nachfolgenden Anforderungen unerwartete Ergebnisse zurückgeben.

Beachten Sie, dass die $top Abfrageoption in diesem Fall die maximale Anzahl von Ergebnissen pro Seite angibt, nicht die maximale Anzahl von Ergebnissen im gesamten Antwortsatz.

Weitere Informationen finden Sie unter Abfragen von Tabellen und Entitäten .

Wenn Sie Fortsetzungstoken manuell mithilfe der Microsoft .NET-Clientbibliothek behandeln, wandeln Sie zuerst das Ergebnis des Abfragevorgangs in ein QueryOperationResponse-Objekt um. Anschließend können Sie auf die Header des Fortsetzungstokens in der Headers-Eigenschaft des QueryOperationResponse -Objekts zugreifen.

Wenn Sie die Fortsetzungstoken abgerufen haben, können Sie an ihrer Werte eine Abfrage erstellen, um die nächste Ergebnisseite zurückzugeben. Ein Abfrageanforderungs-URI kann folgende Parameter akzeptieren, die den in der Antwort zurückgegebenen Headern des Fortsetzungstokens entsprechen:

  • NextTableName

  • NextPartitionKey

  • NextRowKey

Hinweis

Die der Anforderung zugewiesene Gesamtzeit für die Planung und Verarbeitung einer Abfrage beträgt 30 Sekunden, einschließlich fünf Sekunden für die Abfrageausführung.

Wenn es sich bei dem Vorgang um einen Einfüge-, Aktualisierungs- oder Löschvorgang handelt, war der Vorgang möglicherweise auf dem Server erfolgreich, obwohl vom Client ein Fehler zurückgegeben wurde. Dies kann der Fall sein, wenn das Clienttimeout auf weniger als 30 Sekunden festgelegt ist, d. h. den maximalen Timeoutwert für einen Einfüge-, Update- oder Löschvorgang.

Beispiele für Antwortheader und nachfolgende Anforderung

Im folgenden Codebeispiel wird eine Gruppe von Beispielantwortheadern aus einer Entitätsabfrage für eine Tabelle Kunden veranschaulicht, die Fortsetzungsheader zurückgibt. Es werden x-ms-continuation-NextPartitionKey und x-ms-continuation-NextRowKey zurückgegeben.

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  

Die Anforderung für die nächste Datenseite kann wie der folgende URI erstellt werden:

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

Weitere Informationen

Adressieren von Tabellendienstressourcen
Vorgänge für Tabellen
Vorgänge für Entitäten