导出 (0) 打印
全部展开

查询超时和分页

更新时间: 2014年2月

表服务支持以下两种类型的查询服务:

  • 查询表 (REST API)操作返回指定存储帐户中的表的列表。可根据对请求指定的条件来筛选表的列表。

  • 请求实体 (REST API)操作从指定的表返回一组实体。可根据对请求指定的条件来筛选查询结果。

对表服务的查询一次可以返回最多 1000 项,最长执行时间为 5 秒。如果结果集包含 1000 项以上,查询在 5 秒内没有完成,或者查询跨越分区边界,则响应中包含的标头将为开发人员提供要使用的继续标记,以便在结果集中的下一项处继续查询。查询表 (REST API) 操作或 请求实体 (REST API) 操作可返回继续标记标头。

请注意分配给计划和处理查询请求的总时间为 30 秒,包括查询执行的 5 秒。

查询可能不返回任何结果,但仍会返回继续标记头。

下表中显示了继续标记头。

 

继续标记头 说明

x-ms-continuation-NextTableName

此标头在查询表 (REST API)操作的上下文中返回。如果返回的表的列表不完整,则继续标记头中包括列表中下一个表的名称哈希。

x-ms-continuation-NextPartitionKey

此标头在请求实体 (REST API)操作的上下文中返回。此标头包含在针对表的后续查询中返回的下一个分区键的哈希。

x-ms-continuation-NextRowKey

此标头在请求实体 (REST API)操作的上下文中返回。此标头包含在针对表的后续查询中返回的下一个行键的哈希。

请注意,在某些情况下,x-ms-continuation-NextRowKey 可能是 Null

若要检索继续标记并执行后续查询以返回下一页结果,请首先检查继续标记的响应标头。如果没有标头或标头的值为 Null,则没有要返回的其他实体。如果要使用 Microsoft .NET 客户端库来处理继续标记,请首先将查询操作的结果转换为 QueryOperationResponse 对象。然后,可以在 QueryOperationResponse 对象的 Headers 属性中访问继续标记头。

在检索继续标记之后,请使用这些标记的值来构造查询以返回下一页结果。查询请求 URI 可获取与通过响应返回的继续标记头相对应的参数:

  • NextTableName

  • NextPartitionKey

  • NextRowKey

note备注
客户端可通过使用 DataServiceContext 类的 Timeout 属性来设置查询操作的超时。分配给请求的查询计划和处理总时间是 30 秒,包括用于执行查询的 5 秒。

如果操作是插入或删除操作,尽管客户端返回错误,操作也可在服务器上成功完成。如果将客户端超时设置为小于 30 秒(30 秒是插入、更新或删除操作的最大超时),可能发生这种情况。

下面的代码示例说明针对返回继续头的名为 Customers 的表进行的实体查询的示例响应标头。将返回 x-ms-continuation-NextPartitionKeyx-ms-continuation-NextRowKey

Date: Mon, 25 Nov 2013 20:11:08 GMT
Content-Type: application/atom+xml;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: 2013-08-15
x-ms-continuation-NextPartitionKey: 1!8!U21pdGg-
x-ms-continuation-NextRowKey: 1!8!QmVuOTk5
Content-Length: 880298

可以构造下一页数据的请求,如下面的 URI 所示:

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

另请参阅

显示:
© 2014 Microsoft