Compartilhar via


Manipulando erros e avisos (XMLA)

A manipulação de erros é necessária quando uma chamada de método Discover ou Execute XMLA (XML for Analysis) não é executada, é executada com êxito mas gera erros ou avisos ou é executada com êxito mas retorna resultados que contêm erros.

Erro

Relatório

A chamada de método XMLA não é executada

Microsoft SQL Server Analysis Services retorna uma mensagem de falha SOAP com os detalhes da falha.

Para obter mais informações, consulte a seção Manipulação de falhas SOAP.

Erros ou avisos em uma chamada de método com êxito

O Analysis Services inclui um elemento error ou warning para cada erro ou aviso, respectivamente, na propriedade Messages do elemento root que contém os resultados da chamada de método.

Para obter mais informações, consulte a seção Manipulando erros e avisos.

Erros no resultado de uma chamada de método com êxito

O Analysis Services inclui um elemento embutido error ou warning para o erro ou aviso, respectivamente, no elemento Cell ou row apropriado dos resultados da chamada de método.

Para obter mais informações, consulte a seção Manipulando erros e avisos embutidos.

Manipulando falhas SOAP

O Analysis Services retorna uma falha SOAP quando ocorrem as seguintes situações:

  • A mensagem SOAP que contém o método XMLA não foi bem formada ou não pôde ser validada pela instância do Analysis Services.

  • Houve um erro de comunicação ou outro erro envolvendo a mensagem SOAP que contém o método XMLA.

  • O método XMLA não foi executado na instância do Analysis Services.

Os códigos de falha SOAP para XMLstartA começam com "XMLForAnalysis", seguido por um ponto e o código de resultado hexadecimal HRESULT. Por exemplo, um código de erro "0x80000005" é formatado como "XMLForAnalysis.0x80000005". Para obter mais informações sobre o formato de falha SOAP, consulte Falha Soap no protocolo SOAP 1.1 do W3C.

Informações de código de falha

A tabela a seguir mostra as informações de código de falha XMLA contidas na sessão de detalhe da resposta SOAP. As colunas são os atributos de um erro na seção de detalhe de uma falha SOAP.

Nome da coluna

Tipo

Descrição

Nulo permitido1

ErrorCode

UnsignedInt

Código de retorno que indica o êxito ou a falha do método. O valor hexadecimal deve ser convertido para um valor UnsignedInt.

Não

WarningCode

UnsignedInt

Código de retorno que indica uma condição de aviso. O valor hexadecimal deve ser convertido para um valor UnsignedInt.

Sim

Description

String

Texto e descrição de erro ou de aviso retornadas pelo componente que gerou o erro.

Sim

Source

String

Nome do componente que gerou o erro ou o aviso.

Sim

HelpFile

String

Caminho ou URL para o arquivo de Ajuda ou tópico que descreve o erro ou o aviso.

Sim

1 Indica se os dados são obrigatórios e se devem ser retornados ou se os dados são opcionais e uma cadeia de caracteres nula será permitida caso a coluna não se aplique.

A seguir, um exemplo de uma falha SOAP ocorrida quando uma chamada de método falhou:

<?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>
<Error
ErrorCode="2147483653"
Description="An unexpected error has occurred."
Source="XML for Analysis Provider"
HelpFile="" />
         </detail>
      </SOAP-ENV:Fault>
</SOAP-ENV:Envelope>

Manipulando erros e avisos

O Analysis Services retornará a propriedade Messages no elemento root para um comando se as situações a seguir ocorrerem após a execução do comando:

  • O próprio método não falhou, mas houve uma falha na instância do Analysis Services após o êxito da chamada de método.

  • A instância do Analysis Services retorna um aviso quando o comando tem êxito.

A propriedade Messages segue todas as outras propriedades contidas pelo elemento root e pode conter um ou mais elementos Message. Por sua vez, cada elemento Message pode conter um único elemento error ou warning descrevendo erros ou avisos, respectivamente, ocorridos para o comando especificado.

Para obter mais informações sobre erros e avisos contidos na propriedade Messages, consulte Elemento Messages (XMLA).

Manipulando erros durante a serialização

Se houver um erro depois que a instância do Analysis Services já tiver começado a serializar a saída de um comando executado com êxito, o Analysis Services retornará um elemento Exception em um namespace diferente no ponto do erro. A instância do Analysis Services fechará todos os elementos abertos para que o documento XML enviado ao cliente seja um documento válido. A instância também retornará um elemento Messages com a descrição do erro.

Manipulando erros e avisos embutidos

O Analysis Services retornará um error ou warning embutido para um comando se o próprio método XMLA não tenha falhado, mas houve um erro específico de um elemento de dados nos resultados retornados pelo método na instância do Analysis Services após o êxito da chamada de método XMLA.

O Analysis Services fornece elementos error e warning embutidos se houver problemas específicos de uma célula ou de outros dados contidos em um elemento root usando o tipo de dados MDDataSet, como um erro de segurança ou um erro de formatação para uma célula. Nesses casos, o Analysis Services retorna um elemento error ou warning no elemento Cell ou row que contém o erro ou o aviso, respectivamente.

O exemplo a seguir ilustra um conjunto de resultados que contém um erro no conjunto de linhas retornado de um Execute método que usa o comando Statement.

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