Поделиться через


Обработка ошибок и предупреждений (XMLA)

Когда вызов метода XML для аналитики (XMLA) Discover или Execute не запускается, выполняется успешно, но выдает ошибки или предупреждения, либо выполняется успешно, но возвращает результаты, содержащие ошибки, требуется обработка ошибок.

ошибка;

Отчет

Вызов метода XMLA не запускается

Microsoft SQL Server Службы Analysis Services возвращают сообщение о сбое SOAP с описанием возникшей неисправности.

Дополнительные сведения см. в разделе Обработка сбоев SOAP.

Ошибки или предупреждения при успешном вызове метода

По каждой ошибке или предупреждению службы Службы Analysis Services включают элемент error или warning соответственно в свойство Messages элемента root, содержащего результаты вызова метода.

Дополнительные сведения см. в разделе Обработка ошибок и предупреждений.

Ошибки в результате после успешного вызова метода

В случае ошибки или предупреждения службы Службы Analysis Services включают встроенный элемент error или warning соответственно в соответствующий элемент Cell или row результатов вызова метода.

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

Обработка сбоев SOAP

Службы Службы Analysis Services возвращают сбой SOAP при возникновении следующих ситуаций:

  • Сообщение SOAP, содержащее метод XMLA, имеет неправильный формат либо экземпляр служб Службы Analysis Services не может провести его валидацию.

  • Произошла ошибка связи или другая ошибка с участием сообщения SOAP, содержащего метод XMLA.

  • Метод XMLA не запустился в экземпляре служб Службы Analysis Services.

Коды сбоев SOAP для XMLstartA начинаются с «XMLForAnalysis», далее следует точка и шестнадцатеричный код результата HRESULT. Например, код ошибки «0x80000005» форматируется как «XMLForAnalysis.0x80000005». Дополнительные сведения о формате сбоев SOAP см. в разделе «Сбои Soap» в W3C Simple Object Access Protocol (SOAP) 1.1.

Сведения о коде ошибки

В следующей таблице приведены сведения о кодах ошибки XMLA, которые содержатся в разделе подробностей ответа SOAP Столбцы являются атрибутами ошибки в разделе подробностей сбоя SOAP.

именем столбца

Type

Description

Значение Null разрешено1

ErrorCode

UnsignedInt

Код возврата, указывающий успешное или неудачное выполнение метода. Шестнадцатеричное значение необходимо преобразовать в значение UnsignedInt.

No

WarningCode

UnsignedInt

Код возврата, указывающий состояние предупреждения. Шестнадцатеричное значение необходимо преобразовать в значение UnsignedInt.

Yes

Description

String

Текст ошибки или предупреждения и описание, возвращаемые компонентом, сформировавшим ошибку.

Yes

Source

String

Имя компонента, сформировавшего ошибку или предупреждение.

Yes

HelpFile

String

Путь или URL-адрес к файлу или разделу справки, в котором описывается ошибка или предупреждение.

Yes

1 Указывает, требуются ли данные и должны ли они быть возвращены, либо предоставление денные является необязательным и пустая строка является допустимой, если столбец не применяется.

Далее приведен пример сбоя SOAP, произошедшего при ошибке вызова метода:

<?xml version="1.0"?>   <SOAP-ENV:Envelope   xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"   SOAP-ENV:encodingStyle="https://schemas.xmlsoap.org/soap/encoding/">      <SOAP-ENV:Fault>         <faultcode>XMLAnalysisError.0x80000005</faultcode>         <faultstring>The XML for Analysis provider encountered an error.</faultstring>         <faultactor>XML for Analysis Provider</faultactor>         <detail><ErrorErrorCode="2147483653"Description="An unexpected error has occurred."Source="XML for Analysis Provider"HelpFile="" />         </detail>      </SOAP-ENV:Fault></SOAP-ENV:Envelope>

Обработка ошибок и предупреждений

Службы Службы Analysis Services возвращают свойство Messages в элементе root для команды в случае возникновения следующих ситуаций после запуска этой команды:

  • Сам метод выполнен успешно, но ошибка возникла в экземпляре служб Службы Analysis Services после успешного вызова метода.

  • Экземпляр служб Службы Analysis Services возвращает предупреждение при успешном выполнении команды.

Свойство Messages следует за всеми остальными свойствами, содержащимися в элементе root, оно может содержать один или несколько элементов Message. В свою очередь каждый элемент Message может содержать один из элементов error или warning, соответственно описывающий ошибки или предупреждения, возникшие в связи с указанной командой.

Дополнительные сведения об ошибках и предупреждениях, содержащихся в свойстве Messages см. в разделе Элемент Messages (XML для аналитики).

Обработка ошибок во время сериализации

Если ошибка возникает после того, как экземпляр служб Службы Analysis Services уже начал сериализацию выходных данных успешно выполненной команды, службы Службы Analysis Services возвращают элемент Exception в другом пространстве имен в точке ошибки. Затем экземпляр служб Службы Analysis Services закрывает все открытые элементы с тем, чтобы XML-документ, отправляемый клиенту, был допустимым. Экземпляр также возвращает элемент Messages, содержащий описание ошибки.

Обработка встроенных ошибок и предупреждений

Службы Службы Analysis Services возвращают встроенный элемент error или warning для команды, если сам метод XMLA выполнен успешно, а ошибка, характерная для элемента данных в результатах, возвращаемых методом, возникла в экземпляре служб Службы Analysis Services после успешного вызова метода XMLA.

Службы Службы Analysis Services выдают встроенные элементы error и warning в случае возникновения проблем, характерных для ячейки или других данных, которые содержатся внутри элемента root, использующего тип данных MDDataSet, например ошибка безопасности или ошибка форматирования для ячейки. В этих случаях службы Службы Analysis Services возвращают элемент error или warning в элементе Cell или row, который содержит ошибку или предупреждение соответственно.

В следующем примере иллюстрируется результирующий набор, который содержит ошибку в наборе строк, возвращенном от метода Execute при помощи команды Statement.

<return>   ...   <root>      ...      <CellData>      ...         <Cell CellOrdinal="10">            <Value>               <Error>                  <ErrorCode>2148497527</ErrorCode>                   <Description>Security Error.</Description>                </Error>            </Value>         </Cell>      </CellData>      ...   </root>   ...</return>