Condividi tramite


Timeout delle query e paginazione

Il servizio tabelle supporta i due tipi di operazioni di query seguenti:

  • L'operazione Tabelle query restituisce l'elenco di tabelle all'interno dell'account di archiviazione specificato. L'elenco delle tabelle può essere filtrato in base ai criteri specificati nella richiesta.

  • L'operazione Entità query restituisce un set di entità dalla tabella specificata. I risultati delle query possono essere filtrati in base ai criteri specificati nella richiesta.

Una query nel servizio tabelle può restituire un massimo di 1.000 elementi contemporaneamente e può essere eseguita per un massimo di cinque secondi. Se il set di risultati contiene più di 1.000 elementi, se la query non viene completata entro cinque secondi o se la query supera il limite della partizione, la risposta include le intestazioni che forniscono allo sviluppatore i token di continuazione da utilizzare per riprendere la query all'elemento successivo nel set di risultati. Le intestazioni del token di continuazione possono essere restituite per un'operazione Tabelle di query o per un'operazione Di entità query .

Si noti che il tempo totale assegnato alla richiesta per la pianificazione e l'elaborazione della query è 30 secondi, inclusi i cinque secondi per l'esecuzione della query.

È possibile che una query non restituisca risultati, ma restituisca un'intestazione di continuazione.

Le intestazioni dei token di continuazione vengono visualizzate nella tabella seguente.

Intestazione dei token di continuazione Descrizione
x-ms-continuation-NextTableName Questa intestazione viene restituita nel contesto di un'operazione Tabelle di query . Se l'elenco di tabelle restituito non è completo, nell'intestazione dei token di continuazione viene incluso un hash della tabella successiva nell'elenco.
x-ms-continuation-NextPartitionKey Questa intestazione viene restituita nel contesto di un'operazione Query Entityes . L'intestazione contiene un hash della chiave di partizione successiva da restituire in una query successiva eseguita nella tabella.
x-ms-continuation-NextRowKey Questa intestazione viene restituita nel contesto di un'operazione Query Entityes . L'intestazione contiene un hash della chiave di riga successiva da restituire in una query successiva eseguita nella tabella.

Si noti che in alcuni casi, x-ms-continuation-NextRowKey può essere null.

Per recuperare i token di continuazione ed eseguire una query successiva per restituire la pagina successiva di risultati, analizzare le intestazioni della risposta per i token di continuazione. Se mancano le intestazioni o i valori delle intestazioni sono null, non verranno restituite entità aggiuntive.

Nota

Quando si effettuano richieste successive che includono token di continuazione, assicurarsi di passare l'URI originale nella richiesta. Ad esempio, se è stata specificata un'opzione $filter, $selecto $top query come parte della richiesta originale, si vuole includere tale opzione nelle richieste successive. In caso contrario, le richieste successive potrebbero restituire risultati imprevisti.

Si noti che l'opzione $top di query in questo caso specifica il numero massimo di risultati per pagina, non il numero massimo di risultati nell'intero set di risposte.

Per altre informazioni, vedere Query su tabelle ed entità .

Se si gestiscono manualmente i token di continuazione usando microsoft .NET Client Library, eseguire prima il cast del risultato dell'operazione di query in un oggetto QueryOperationResponse . È quindi possibile accedere alle intestazioni del token di continuazione nella proprietà Headers dell'oggetto QueryOperationResponse .

Dopo avere recuperato i token di continuazione, utilizzare i relativi valori per creare una query per restituire la pagina successiva di risultati. Un URI della richiesta di query può accettare questi parametri, che corrispondono alle intestazioni dei token di continuazione restituite nella risposta:

  • NextTableName

  • NextPartitionKey

  • NextRowKey

Nota

Il tempo totale assegnato alla richiesta per la pianificazione e l'elaborazione di una query è di 30 secondi, inclusi cinque secondi per l'esecuzione di query.

Se l'operazione è un'operazione di inserimento, aggiornamento o eliminazione, l'operazione potrebbe avere esito positivo nel server nonostante un errore restituito dal client. Questa situazione può verificarsi quando il timeout del client è impostato su un valore inferiore a 30 secondi, ovvero il timeout massimo per un'operazione di inserimento, aggiornamento o eliminazione.

Intestazioni della risposta di esempio e richiesta successiva

Nell'esempio di codice seguente viene illustrato un set di intestazioni della risposta di esempio da una query di entità su una tabella denominata Customers che restituisce intestazioni di continuazione. Vengono restituite le intestazioni x-ms-continuation-NextPartitionKey e 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  

La richiesta per la pagina successiva di dati può essere creata come l'URI seguente:

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

Vedere anche

Indirizzamento delle risorse del servizio tabelle
Operazioni nelle tabelle
Operazioni sulle entità