Экспорт (0) Печать
Развернуть все

Получение списка блокировок

Обновлено: Февраль 2014 г.

Операция Get Block List извлекает список блокировок, которые были загружены как часть блочного BLOB-объекта.

Для BLOB-объектов поддерживаются два списка блокировок.

  • Список зафиксированных блокировок. Список блокировок, которые успешно зафиксированы в заданном BLOB-объекте с помощью Вставка списка блокировок.

  • Список незафиксированных блокировок. Список блокировок, которые были отправлены для BLOB-объекта с помощью Вставка блокировки, но еще не были зафиксированы. Эти блокировки хранятся в Azure в сопоставлении с BLOB-объектом, но еще не являются его частью.

Можно вызвать Get Block List для возврата списка фиксированных блокировок, списка незафиксированных блокировок или обоих списков. Можно также вызвать эту операцию для получения списка зафиксированных блокировок для моментального снимка.

Запрос Get Block List можно составить следующим образом. Рекомендуется использовать протокол HTTPS. Замените myaccount именем нужной учетной записи хранения.

 

  URI запроса метода GET Версия HTTP

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&snapshot=<DateTime>

HTTP/1.1

При построении запроса к эмулированной службе хранилища укажите имя узла эмулятора и порт службы BLOB-объектов как 127.0.0.1:10000, затем укажите имя эмулированной учетной записи хранилища.

 

  URI запроса метода GET Версия HTTP

http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=blocklist

HTTP/1.1

Дополнительные сведения см. в Использование эмулятора хранилища Azure для разработки и тестирования.

В URI запроса могут быть заданы следующие дополнительные параметры.

 

Параметр URI Описание

snapshot

Необязательно. Параметр моментального снимка является непрозрачным значением DateTime, которое, если присутствует, указывает список BLOB-объектов для получения. Дополнительные сведения о работе с моментальными снимками BLOB-объектов см. в разделе Создание моментальных снимков больших двоичных объектов.

blocklisttype

Указывает, следует вернуть список зафиксированных блокировок, список незафиксированных блокировок или оба списка одновременно. Допустимыми значениями являются значения committed, uncommitted или all. Если этот параметр не указан, Get Block List возвращает список зафиксированных блокировок.

timeout

Необязательно. Параметр timeout указывается в секундах. Дополнительные сведения см. в Задание времени ожидания для операций службы BLOB-объектов.

В следующей таблице перечислены обязательные и необязательные заголовки запросов.

 

Заголовок запроса Описание

Authorization

Обязательно. Указывает схему проверки подлинности, имя учетной записи и подпись. Дополнительные сведения см. в Проверка подлинности для служб хранения Azure.

Date или x-ms-date

Обязательно. Задает время в формате UTC для запроса. Дополнительные сведения см. в Проверка подлинности для служб хранения Azure.

x-ms-version

Обязательно для всех запросов с проверкой подлинности, необязательно для анонимных запросов. Задает версию операции, используемой для этого запроса. Дополнительные сведения см. в Управление версиями для служб хранилища Azure.

x-ms-lease-id:<ID>

Необязательно. Если этот заголовок указан, то операция будет выполнена, только если выполняются оба следующих условия.

  • Аренда BLOB-объекта в настоящее время активна.

  • Идентификатор аренды, указанный в запросе, соответствует данному идентификатору у BLOB-объекта.

Если этот заголовок указан и оба эти условия не выполнены, попытка выполнения запроса окончится неудачей и операция завершится ошибкой с кодом состояния 412 (не выполнено предварительное условие).

x-ms-client-request-id

Необязательно. Предоставляет сформированное клиентом непрозрачное значение с ограничением в 1 КБ, которое записывается в журналы аналитики, когда включено ведение журналов аналитики хранилища. Этот заголовок настоятельно рекомендуется использовать для соотнесения действий, выполняемых на стороне клиента, с запросами, получаемыми сервером. Дополнительные сведения см. в разделах Сведения о ведении журнала службы аналитики хранилища и Ведение журналов в Windows Azure: использование журналов для отслеживания запросов к хранилищу.

Следующий пример URI запроса возвращает список зафиксированных блокировок для большого двоичного объекта с именем MOV1.avi:

GET http://myaccount.blob.core.windows.net/movies/MOV1.avi?comp=blocklist&blocklisttype=committed HTTP/1.1

Следующий пример URI запроса возвращает списки и зафиксированных и незафиксированных блокировок:

GET http://myaccount.blob.core.windows.net/movies/MOV1.avi?comp=blocklist&blocklisttype=all HTTP/1.1

Следующий пример URI запроса возвращает список зафиксированных блокировок для моментального снимка. Заметьте, что моментальный снимок состоит только из зафиксированных блокировок, поэтому незафиксированных блокировок, сопоставленных с ним, нет.

GET http://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&snapshot=2009-09-30T20%3a11%3a15.2735974Z

Ответ включает код состояния HTTP, набор заголовков ответа и текст ответа, содержащий список блокировок.

Успешная операция возвращает код состояния 200 (ОК).

Сведения о кодах состояния см. в разделе Коды состояний и ошибок.

Ответ для этой операции включает следующие заголовки. Ответ может также включать дополнительные стандартные заголовки HTTP. Все стандартные заголовки соответствуют Спецификации протокола HTTP/1.1.

 

Заголовок ответа Описание

Last-Modified

Дата и время последнего изменения BLOB-объекта. Дата в формате согласно RFC 1123. Дополнительные сведения см. в разделе Представление значений даты и времени в заголовках. Этот заголовок возвращается, только если большой двоичный объект имеет зафиксированные блокировки.

Любая операция, которая изменяет BLOB-объект, в том числе обновления метаданных или свойств BLOB-объекта, изменяет время последнего изменения BLOB-объекта.

ETag

ETag BLOB-объекта. Этот заголовок возвращается, только если большой двоичный объект имеет зафиксированные блокировки.

Content-Type

MIME-тип содержимого BLOB-объекта. Значение по умолчанию — application/xml.

x-ms-blob-content-length

Размер большого двоичного объекта в байтах.

x-ms-request-id

Этот заголовок однозначно определяет выполненный запрос, его также можно использовать для устранения связанных с запросом неполадок. Дополнительные сведения см. в Устранение неполадок при API-операциях.

x-ms-version

Указывает версию службы BLOB-объектов, используемую для выполнения запроса. Этот заголовок возвращается для запросов к версии 2009-09-19 и более поздним версиям.

Этот заголовок также возвращается для анонимных запросов без указания версии, если контейнер был помечен как доступный для общего доступа с помощью версии 2009-09-19 службы BLOB-объектов. Обратите внимание, что через анонимный запрос может быть возвращен только список зафиксированных блокировок.

Date

Значение даты и времени в формате UTC, сформированное службой и указывающее время, когда был инициирован ответ.

Эта операция также поддерживает использование условных заголовков только для получения списка блокировок только в случае, если выполняются указанные условия. Дополнительные сведения см. в Указание условных заголовков для операций со службой BLOB-объектов.

Формат текста ответа для запроса, который возвращает только зафиксированные блокировки, выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
    <Block>
      <Name>base64-encoded-block-id</Name>
      <Size>size-in-bytes</Size>
    </Block>
  <CommittedBlocks>
</BlockList>

Формат текста ответа для запроса, который возвращает как зафиксированные, так и незафиксированные блокировки, выглядит следующим образом:


<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
     <Block>
        <Name>base64-encoded-block-id</Name>
        <Size>size-in-bytes</Size>
     </Block>
  </CommittedBlocks>
  <UncommittedBlocks>
    <Block>
      <Name>base64-encoded-block-id</Name>
      <Size>size-in-bytes</Size>
    </Block>
  </UncommittedBlocks>
 </BlockList>

В следующем примере параметр blocklisttype имеет значение committed, поэтому в ответе возвращаются только незафиксированные блокировки.

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/xml
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23
Date: Sun, 25 Sep 2011 00:33:19 GMT

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
    <Block>
      <Name>BlockId001</Name>
      <Size>4194304</Size>
    </Block>
    <Block>
      <Name>BlockId002</Name>
      <Size>4194304</Size>
    </Block>
  </CommittedBlocks>
</BlockList>

В этом примере параметр blocklisttype имеет значение all и в ответе возвращаются и зафиксированные и незафиксированные блокировки.

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/xml
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23
Date: Sun, 25 Sep 2011 00:35:56 GMT

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
    <Block>
      <Name>BlockId001</Name>
      <Size>4194304</Size>
    </Block>
    <Block>
      <Name>BlockId002</Name>
      <Size>4194304</Size>
    </Block>
  </CommittedBlocks>
  <UncommittedBlocks>
    <Block>
      <Name>BlockId003</Name>
      <Size>4194304</Size>
    </Block>
    <Block>
      <Name>BlockId004</Name>
      <Size>1024000</Size>
    </Block>
  </UncommittedBlocks>
</BlockList>

В этом примере параметр blocklisttype имеет значение all, но BLOB-объект еще не был зафиксирован, поэтому элемент CommittedBlocks пуст.

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/xml
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23
Date: Wed, 14 Sep 2011 00:40:22 GMT

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks />
  <UncommittedBlocks>
    <Block>
      <Name>BlockId001</Name>
      <Size>1024</Size>
    </Block>
    <Block>
      <Name>BlockId002</Name>
      <Size>1024</Size>
    </Block>
    <Block>
      <Name>BlockId003</Name>
      <Size>1024</Size>
    </Block>
    <Block>
      <Name>BlockId004</Name>
      <Size>1024</Size>
    </Block>
  </UncommittedBlocks>
</BlockList>

Если список управления доступом контейнера разрешает анонимный доступ, любой клиент может вызывать метод Get Block List, однако в общем доступе будут только зафиксированные блокировки. Доступ к списку незафиксированных блокировок есть только у владельца учетной записи и тех, кто использует подпись коллективного доступа, имеющую разрешение на чтение этого BLOB-объекта или его контейнера.

Вызовите метод Get Block List, чтобы получить список блокировок, которые были зафиксированы в блочном BLOB-объекте, список блокировок, которые еще не были зафиксированы, или оба списка. Используйте параметр blocklisttype, чтобы указать, какой список блокировок нужно вернуть.

Список зафиксированных блокировок возвращается в том же порядке, в каком они были зафиксированы операцией Вставка списка блокировок. Блокировка не может появиться в списке зафиксированных блокировок более одного раза.

Можно использовать список незафиксированных блокировок, чтобы определить, какие блокировки отсутствуют в BLOB-объекте, в случае неудачного завершения вызовов Put Block или Put Block List. Список незафиксированных блокировок возвращается, начиная с позднее всего отправленной блокировки и заканчивая ранее всего переданной. Если идентификатор блокировки загружен более одного раза, в списке отображается только последняя загруженная блокировка.

Обратите внимание, что, если BLOB-объект еще не был зафиксирован, вызов Get Block List с параметром blocklisttype=all возвращает незафиксированные блокировки, а элемент CommittedBlocks остается пустым.

Get Block List относится только к блочным BLOB-объектам. Вызов Get Block List для страничного BLOB-объекта вызывает код состояния 400 (неправильный запрос).

Показ:
© 2014 Microsoft