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-NextRowKey null 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 $filter
Abfrageoption , $select
oder $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