Executando transações de grupo de entidades
O serviço Tabela dá suporte a transações em lote em entidades que estão na mesma tabela e pertencem ao mesmo grupo de partições. Várias operações Inserir Entidade, Atualizar Entidade, Entidade de Mesclagem, Excluir Entidade, Inserir ou Substituir Entidade e Inserir ou Mesclar Entidade têm suporte em uma única transação.
Requisitos para transações de grupo de entidades
Uma transação de grupo de entidades deve atender aos seguintes requisitos:
Todas as entidades sujeitas às operações como parte da transação devem ter o mesmo valor de
PartitionKey
.Uma entidade pode aparecer apenas uma vez na transação e apenas uma operação pode ser executada nela.
A transação pode incluir no máximo 100 entidades, e sua carga total pode não ter mais de 4 MiB de tamanho.
Todas as entidades estão sujeitas às limitações descritas em Noções básicas sobre o Modelo de Dados do Serviço de Tabela.
Suporte do serviço Tabela para solicitações em lotes de OData
A semântica para transações de grupo de entidades é definida pela Especificação do Protocolo OData. A especificação OData define os seguintes conceitos para solicitações em lote:
Um conjunto de alterações é um grupo de uma ou mais operações de inserção, atualização ou exclusão.
Um lote é um contêiner de operações, incluindo uma ou mais operações de conjuntos de alteração e consulta.
O serviço Tabela dá suporte a um subconjunto da funcionalidade definida pela especificação de OData:
- O serviço Tabela oferece suporte somente um único conjunto de alterações em um lote. O conjunto de alterações pode incluir várias operações de inserção, atualização e exclusão. Se um lote incluir mais de um conjunto de alterações, o primeiro conjunto de alterações será processado pelo serviço, e os conjuntos de alterações adicionais serão rejeitados com o código de status 400 (Solicitação Incorreta).
Importante
Várias operações em uma única entidade não são permitidas em um conjunto de alterações.
Observe que uma operação de consulta não é permitida em um lote que contenha operações de inserção, atualização ou exclusão; ela deverá ser enviada separadamente no lote.
As operações em um conjunto de alterações são processadas de forma atômica; ou seja, todas as operações no conjunto de alterações são bem-sucedidas ou falham. As operações são processadas na ordem em que são especificadas no conjunto de alterações.
O serviço Tabela não oferece suporte à vinculação de operações em um conjunto de alterações.
O serviço Tabela oferece suporte a um máximo de 100 operações em um conjunto de alterações.
Transações do grupo de entidades via REST
As seções a seguir descrevem como construir uma solicitação em lotes e como interpretar a resposta em lotes e exemplos de apresentação de cada uma.
Sintaxe da solicitação em lote
Para executar uma solicitação em lote por meio de REST, especifique a opção $batch
no URI de solicitação. Por exemplo:
https://myaccount.table.core.windows.net/$batch
Observe que o URI de solicitação não inclui o nome da tabela.
Uma solicitação em lote é enviada ao servidor com uma única diretiva POST. Essa solicitação deve incluir o cabeçalho x-ms-version
; o valor do cabeçalho deve ser definido como 2009-04-14
ou mais recente.
A carga XML é uma mensagem MIME de várias partes que contém o lote e o conjunto de alterações. A carga inclui dois limites de MIME:
Um limite de lote abrange o conjunto de alterações.
Um limite de conjunto de alterações separa a operações individuais de inserção, atualização e exclusão no lote.
Uma solicitação individual no conjunto de alterações é idêntica a uma solicitação feita quando essa operação está sendo chamada por si só. Por exemplo:
Para especificar o cabeçalho
If-Match
em uma operação de atualização, mesclagem ou exclusão, inclua o cabeçalho no conjunto de cabeçalhos de solicitação da operação apropriada no conjunto de alterações.Para especificar o formato de carga (JSON ou ATOM) para cada operação no conjunto de alterações, inclua os cabeçalhos ,
Accept
e apropriadosContent-Type
, conforme explicado em detalhes em Formato de Carga para Operações de Serviço de Tabela.DataServiceVersion
Version
Para suprimir o eco do conteúdo da resposta para a entidade Insert, especifique o
Prefer
cabeçalho com oreturn-no-content
valor para cada operação de inserção no conjunto de alterações. Para obter mais informações sobre oPrefer
cabeçalho, consulte Resumo da Funcionalidade do Serviço de Tabela.
Solicitação de exemplo para operações de inserção, atualização e exclusão
Os exemplos a seguir mostram solicitações em lote que contêm duas operações Inserir Entidade e uma operação de Entidade de Mesclagem . Nesses exemplos, como não estamos interessados no conteúdo de eco na resposta para as operações de inserção, incluímos o Prefer:``return-no-content
cabeçalho .
Observação
JSON é o formato de conteúdo recomendado e é o único formato com suporte para versões 2015-12-11 e posteriores.
JSON (versões 2013-08-15 e posteriores)
O exemplo a seguir mostra uma solicitação em lote com uma carga JSON.
POST https://myaccount.table.core.windows.net/$batch HTTP/1.1
x-ms-version: 2013-08-15
Accept-Charset: UTF-8
DataServiceVersion: 3.0;
MaxDataServiceVersion: 3.0;NetFx
Content-Type: multipart/mixed; boundary=batch_a1e9d677-b28b-435e-a89e-87e6a768a431
x-ms-date: Mon, 14 Oct 2013 18:25:49 GMT
Authorization: SharedKey myaccount:50daR38MtfezvbMdKrGJVN+8sjDSn+AaA=
Host: 127.0.0.1:10002
Content-Length: 1323
Connection: Keep-Alive
--batch_a1e9d677-b28b-435e-a89e-87e6a768a431
Content-Type: multipart/mixed; boundary=changeset_8a28b620-b4bb-458c-a177-0959fb14c977
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
POST https://myaccount.table.core.windows.net/Blogs HTTP/1.1
Content-Type: application/json
Accept: application/json;odata=minimalmetadata
Prefer: return-no-content
DataServiceVersion: 3.0;
{"PartitionKey":"Channel_19", "RowKey":"1", "Rating":9, "Text":".NET..."}
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
POST https://myaccount.table.core.windows.net/Blogs HTTP/1.1
Content-Type: application/json
Accept: application/json;odata=minimalmetadata
Prefer: return-no-content
DataServiceVersion: 3.0;
{"PartitionKey":"Channel_17", "RowKey":"2", "Rating":9, "Text":"Azure..."}
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
MERGE https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_17', RowKey='3') HTTP/1.1
Content-Type: application/json
Accept: application/json;odata=minimalmetadata
DataServiceVersion: 3.0;
{"PartitionKey":"Channel_19", "RowKey":"3", "Rating":9, "Text":"PDC 2008..."}
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977--
--batch_a1e9d677-b28b-435e-a89e-87e6a768a431
Atom Feed (versões anteriores a 2015-12-11)
O exemplo a seguir mostra uma solicitação em lote com uma carga Atom.
POST /$batch HTTP/1.1
User-Agent: Microsoft ADO.NET Data Services
x-ms-version: 2013-08-15
x-ms-date: Thu, 30 Aug 2013 20:45:13 GMT
Authorization: SharedKeyLite myaccount:asOEzsCDS7YEe6oi+bx47KMwbXL0lYZCOlR/oc3FReQ=
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 2.0;NetFx
Content-Type: multipart/mixed; boundary=batch_a1e9d677-b28b-435e-a89e-87e6a768a431
Host: MyHostName:10002
Prefer: return-no-content
Content-Length: ###
--batch_a1e9d677-b28b-435e-a89e-87e6a768a431
Content-Type: multipart/mixed; boundary=changeset_8a28b620-b4bb-458c-a177-0959fb14c977
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
POST https://myaccount.table.core.windows.net/Blogs HTTP/1.1
Content-ID: 1
Content-Type: application/atom+xml;type=entry
Content-Length: ###
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="https://www.w3.org/2005/Atom">
<title />
<author>
<name />
</author>
<id />
<content type="application/xml">
<m:properties>
<d:PartitionKey>Channel_19</d:PartitionKey>
<d:RowKey>1</d:RowKey>
<d:Rating m:type="Edm.Int32">9</d:Rating>
<d:Text>.NET...</d:Title>
</m:properties>
</content>
</entry>
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
POST https://myaccount.table.core.windows.net/Blogs HTTP/1.1
Content-ID: 2
Content-Type: application/atom+xml;type=entry
Prefer: return-no-content
Content-Length: ###
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="https://www.w3.org/2005/Atom">
<title />
<author>
<name />
</author>
<id />
<content type="application/xml">
<m:properties>
<d:PartitionKey>Channel_19</d:PartitionKey>
<d:RowKey>2</d:RowKey>
<d:Rating m:type="Edm.Int32">9</d:Rating>
<d:Text>Azure...</d:Title>
</m:properties>
</content>
</entry>
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
MERGE https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19', RowKey='3') HTTP/1.1
Content-ID: 3
Content-Type: application/atom+xml;type=entry
Content-Length: ###
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="https://www.w3.org/2005/Atom">
<title />
<author>
<name />
</author>
<id>https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='3')</id>
<content type="application/xml">
<m:properties>
<d:PartitionKey>Channel_19</d:PartitionKey>
<d:RowKey>3</d:RowKey>
<d:Rating m:type="Edm.Int32">9</d:Rating>
<d:Text>PDC 2008...</d:Title>
</m:properties>
</content>
</entry>
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977--
--batch_a1e9d677-b28b-435e-a89e-87e6a768a431—
Solicitação de exemplo para consultas
Os seguintes exemplos mostram uma solicitação em lotes para uma consulta. Observe que somente uma única consulta pode ser incluída no conjunto de alterações.
Observação
JSON é o formato de conteúdo recomendado e é o único formato com suporte para versões 2015-12-11 e posteriores.
JSON (versões 2013-08-15 e posteriores)
O exemplo a seguir mostra uma solicitação em lote com uma carga JSON.
POST https://myaccount.table.core.windows.net/$batch HTTP/1.1
x-ms-version: 2013-08-15
Accept-Charset: UTF-8
DataServiceVersion: 3.0;
MaxDataServiceVersion: 3.0;NetFx
Content-Type: multipart/mixed; boundary=batch_f351702c-c8c8-48c6-af2c-91b809c651ce
x-ms-date: Mon, 14 Oct 2013 19:03:55 GMT
Authorization: SharedKey testaccount1:y6TxCsXeRiR4l1KqihwRJ05Qb5zBk=
Host: 127.0.0.1:10002
Content-Length: 255
Connection: Keep-Alive
--batch_f351702c-c8c8-48c6-af2c-91b809c651ce
Content-Type: application/http
Content-Transfer-Encoding: binary
GET https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='2') HTTP/1.1
Accept: application/json;odata=minimalmetadata
--batch_f351702c-c8c8-48c6-af2c-91b809c651ce
Atom Feed (versões anteriores a 2015-12-11)
O exemplo a seguir mostra uma solicitação em lote com uma carga Atom.
POST /$batch HTTP/1.1
User-Agent: Microsoft ADO.NET Data Services
x-ms-version: 2013-08-15
x-ms-date: Thu, 30 Aug 2013 20:45:13 GMT
Authorization: SharedKeyLite myaccount:asOEzsCDS7YEe6oi+bx47KMwbXL0lYZCOlR/oc3FReQ=
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
Content-Type: multipart/mixed; boundary=batch_f351702c-c8c8-48c6-af2c-91b809c651ce
Content-Length: ###
--batch_f351702c-c8c8-48c6-af2c-91b809c651ce
Content-Type: application/http
Content-Transfer-Encoding: binary
GET https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='2') HTTP/1.1
--batch_f351702c-c8c8-48c6-af2c-91b809c651ce—
Sintaxe da resposta em lote
A resposta retorna um código de status geral para a solicitação em lotes, e códigos de status individuais e fragmentos de resultados para cada operação no conjunto de alterações. A resposta é uma mensagem MIME de várias partes que inclui um limite de lote e um limite de conjunto de alterações.
O serviço Tabela retorna um código de status para toda a solicitação em lotes e um ou mais códigos de status para as operações no conjunto de alterações, dependendo se foram bem-sucedidas ou falharam.
Supondo que a solicitação em lote tenha sido devidamente autorizada e tenha sido recebida com êxito pelo serviço Tabela, a solicitação em lote retornará status código 202 (Aceito), mesmo que uma das operações no conjunto de alterações falhe. Se a solicitação em lotes falhar, isso acontecerá antes de qualquer operação no conjunto de alterações ser executada. Por exemplo, a solicitação em lote pode falhar devido a um erro de autorização; nesse caso, o código status indicará essa falha.
As operações em um conjunto de alterações são processadas de forma atômica; ou seja, todas as operações no lote são bem-sucedidas ou todo o lote falha. O serviço Tabela continua processando operações no conjunto de alterações até uma delas falhar. Se uma operação falhar, todas as operações anteriores no lote serão revertidas. Além disso, as transações do grupo de entidades são executados com isolamento de instantâneo.
O código de status de uma operação individual em um conjunto de alterações aparece na resposta do conjunto de alterações. Quando uma operação individual falha, a resposta para o conjunto de alterações indica o código de status 400 (Bad Request
). As informações de erro adicionais na resposta indicam qual operação falhou retornando o índice dessa operação. O índice é o número de sequência do comando na carga.
Para obter um exemplo, consulte a resposta de erro de exemplo abaixo.
Resposta de exemplo para operações de criação, atualização e exclusão
Os exemplos a seguir mostram as respostas para operações em lote enviadas nas solicitações de exemplo mostradas acima.
JSON (versões 2013-08-15 e posteriores)
O exemplo a seguir mostra uma resposta para uma solicitação feita com uma carga JSON.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Content-Type: multipart/mixed; boundary=batchresponse_e69b1c6c-62ff-471e-ab88-9a4aeef0a880
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: ed9c96eb-9473-4fd9-abf6-fa4dcf0d6295
x-ms-version: 2013-08-15
X-Content-Type-Options: nosniff
Date: Mon, 14 Oct 2013 18:25:49 GMT
Content-Length: 1647
--batchresponse_e69b1c6c-62ff-471e-ab88-9a4aeef0a880
Content-Type: multipart/mixed; boundary=changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25
--changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 1
X-Content-Type-Options: nosniff
Cache-Control: no-cache
Preference-Applied: return-no-content
DataServiceVersion: 3.0;
Location: https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='1')
DataServiceId: https://myaccount.table.core.windows.net/Blogs (PartitionKey='Channel_19',RowKey='1')
ETag: W/"0x8D101F7E4B662C4"
--changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 2
X-Content-Type-Options: nosniff
Cache-Control: no-cache
Preference-Applied: return-no-content
DataServiceVersion: 3.0;
Location: https://myaccount.table.core.windows.net/Blogs (PartitionKey='Channel_19',RowKey='2')
DataServiceId: https://myaccount.table.core.windows.net/Blogs (PartitionKey='Channel_19',RowKey='2')
ETag: W/"0x8C134F7A4B692D8"
--changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 3
X-Content-Type-Options: nosniff
Cache-Control: no-cache
DataServiceVersion: 1.0;
ETag: W/"0x8A541B7C4D699D7"
--changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25--
--batchresponse_e69b1c6c-62ff-471e-ab88-9a4aeef0a880--
Atom Feed (versões anteriores a 2015-12-11)
O exemplo a seguir mostra uma resposta para uma solicitação feita com uma carga Atom.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: multipart/mixed; boundary=batchresponse_dc0fea8c-ed83-4aa8-ac9b-bf56a2d46dfb
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: b4b49b3e-19a9-4091-a280-da76a09da8d4
Date: Thu, 30 Aug 2013 20:44:09 GMT
334
batchresponse_dc0fea8c-ed83-4aa8-ac9b-bf56a2d46dfb
Content-Type: multipart/mixed; boundary=--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977
--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 1
Cache-Control: no-cache
Preference-Applied: return-no-content
ETag: W/"0x8D101F7E4B662C4"
Location: https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='1')
DataServiceVersion: 3.0;
--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 2
Cache-Control: no-cache
Preference-Applied: return-no-content
ETag: W/"0x8C134F7A4B692D8"
Location: https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='2')
DataServiceVersion: 3.0;
--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 3
Cache-Control: no-cache
ETag: W/"0x8A541B7C4D699D7"
DataServiceVersion: 3.0;
--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977--
--batchresponse_4c637ba4-b2f8-40f8-8856-c2d10d163a83--
Resposta de exemplo para consultas
Os exemplos a seguir mostram as respostas para as consultas enviadas nas solicitações de exemplo mostradas acima.
JSON (versões 2013-08-15 e posteriores)
O exemplo a seguir mostra uma resposta para uma solicitação feita com uma carga JSON.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Content-Type: multipart/mixed; boundary=batchresponse_0a568496-fb38-4a83-9984-5908d7f4c63d
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 6f2aafa3-19e9-434c-85f2-d178941c2d4b
x-ms-version: 2013-08-15
X-Content-Type-Options: nosniff
Date: Mon, 14 Oct 2013 19:13:30 GMT
Content-Length: 615
--batchresponse_0a568496-fb38-4a83-9984-5908d7f4c63d
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 200 OK
DataServiceVersion: 3.0;
Content-Type: application/json;odata=minimalmetadata;streaming=true;charset=utf-8
X-Content-Type-Options: nosniff
Cache-Control: no-cache
ETag: W/"0x5B168C7B6E589D2"
{"odata.metadata":" https://myaccount.table.core.windows.net/Blogs/$metadata#Blogs/@Element","PartitionKey":"Channel_19","RowKey":"2","Timestamp":"2013-10-14T18:25:49.8922467Z","Rating":9,"Text":"Azure..."}
--batchresponse_0a568496-fb38-4a83-9984-5908d7f4c63d--
Atom Feed (versões anteriores a 2015-12-11)
O exemplo a seguir mostra uma resposta para uma solicitação feita com uma carga Atom.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: multipart/mixed; boundary=batchresponse_4c637ba4-b2f8-40f8-8856-c2d10d163a83
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 9202c4a1-43af-4dc0-baca-aa71f7a7407b
Date: Thu, 30 Aug 2013 20:44:10 GMT
--batchresponse_4c637ba4-b2f8-40f8-8856-c2d10d163a83
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 200 OK
Content-Type: application/atom+xml;charset=utf-8
Cache-Control: no-cache
ETag: W/"0x5B168C7B6E589D2"
DataServiceVersion: 3.0;
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="http://127.0.0.1:10002/testaccount1/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:etag="W/"0x5B168C7B6E589D2"" xmlns="https://www.w3.org/2005/Atom">
<id> https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='1')</id>
<title type="text"></title>
<updated>2013-08-30T20:44:10Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Blogs" href=" Blogs(PartitionKey='Channel_19',RowKey='2')" />
<category term="myaccount.Blogs" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:PartitionKey>Channel_19</d:PartitionKey>
<d:RowKey>2</d:RowKey>
<d:Timestamp m:type="Edm.DateTime">2013-08-30T20:44:09.5789464Z</d:Timestamp>
<d:Text>.Net...</d:RowKey>
<d:Rating m:type="Edm.Int32">9</d:Rating>
</m:properties>
</content>
</entry>
--batchresponse_4c637ba4-b2f8-40f8-8856-c2d10d163a83--
Resposta de erro de exemplo
Os exemplos a seguir mostram respostas de solicitações em lotes que contêm uma operação que falhou. Observe que a resposta em lotes retorna o código de status 202 (Aceito), mas a operação individual que falhou retorna o código de status 400 (Solicitação Incorreta). As informações de erro adicionais são incluídas no corpo da resposta para a operação com falha. O elemento code
especifica o código de erro do serviço de armazenamento, enquanto o elemento message
começa com o índice da operação com falha, seguido pela cadeia de caracteres da mensagem de erro. Para determinar qual operação falhou, analise o valor de índice da mensagem. As operações são indexadas a partir de zero.
Resposta de erro para a solicitação no formato JSON
No exemplo JSON, observe que a operação que falhou foi a primeira operação no conjunto de alterações. No par nome/valor message
, a mensagem é iniciada com o número 0
, seguido pelas informações de erro estendido.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Content-Type: multipart/mixed; boundary=batchresponse_4e1c04af-af2b-4cfc-9e35-7677a5efcfca
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 8abd3c55-a72e-47ba-ae0b-ba43abeb76ae
x-ms-version: 2013-08-15
X-Content-Type-Options: nosniff
Date: Mon, 14 Oct 2013 19:21:58 GMT
Content-Length: 1051
--batchresponse_4e1c04af-af2b-4cfc-9e35-7677a5efcfca
Content-Type: multipart/mixed; boundary=changesetresponse_e2a26601-bba8-4c1a-8a8c-bb66badcbca1
--changesetresponse_e2a26601-bba8-4c1a-8a8c-bb66badcbca1
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 400 Bad Request
Content-ID: 1
X-Content-Type-Options: nosniff
DataServiceVersion: 3.0;
Content-Type: application/json;odata=minimalmetadata;streaming=true;charset=utf-8
{"odata.error":{"code":"OutOfRangeInput","message":{"lang":"en-US","value":"0:One of the request inputs is out of range.\nRequestId:8abd3c55-a72e-47ba-ae0b-ba43abeb76ae\nTime:2013-10-14T19:21:58.0890048Z}}}
--changesetresponse_e2a26601-bba8-4c1a-8a8c-bb66badcbca1--
--batchresponse_4e1c04af-af2b-4cfc-9e35-7677a5efcfca--
Resposta de erro para a solicitação no formato Atom
No exemplo Atom, observe que a operação que falhou foi a quarta operação no conjunto de alterações. No elemento message
, a mensagem é iniciada com o número 3
, seguido pelas informações de erro estendido.
<message xml:lang="en-US">3:One of the request inputs is not valid.</message>
Aqui está a resposta completa:
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: multipart/mixed; boundary=batchresponse_7ab1553a-7dd6-44e7-8107-bf1ea1ab1876
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 45ac953e-a4a5-42ba-9b4d-97bf74a8a32e
Date: Thu, 30 Apr 2009 20:45:13 GMT
6E7
--batchresponse_7ab1553a-7dd6-44e7-8107-bf1ea1ab1876
Content-Type: multipart/mixed; boundary=changesetresponse_6cc856b4-8cb9-41eb-b8d2-bb73475c6cec
--changesetresponse_6cc856b4-8cb9-41eb-b8d2-bb73475c6cec
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 400 Bad Request
Content-ID: 4
Content-Type: application/xml
Cache-Control: no-cache
DataServiceVersion: 1.0;
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code>InvalidInput</code>
<message xml:lang="en-US">3:One of the request inputs is not valid.</message>
</error>
--changesetresponse_6cc856b4-8cb9-41eb-b8d2-bb73475c6cec--
--batchresponse_7ab1553a-7dd6-44e7-8107-bf1ea1ab1876--