Controlar errores y advertencias (XMLA)

El control de errores es necesario cuando una llamada al método Discover o Execute de XML for Analysis (XMLA) no se ejecuta, se ejecuta correctamente pero genera errores o advertencias o se ejecuta correctamente pero devuelve resultados con errores.

Error

Notificación

La llamada al método XMLA no se ejecuta

Microsoft SQL Server Analysis Services devuelve un mensaje de error SOAP que contiene los detalles del error.

Para obtener más información, consulte la sección Controlar errores de SOAP.

Errores o advertencias en una llamada a método correcta

Analysis Services incluye un elemento error o warning para cada error o advertencia, respectivamente, en la propiedad Messages del elemento root que contiene los resultados de la llamada al método.

Para obtener más información, consulte la sección Controlar errores y advertencias.

Errores en el resultado de una llamada a método correcta

Analysis Services incluye un elemento error o warning insertado para el error o la advertencia, respectivamente, en el elemento Cell o row correspondiente de los resultados de la llamada al método.

Para obtener más información, consulte la sección Controlar errores y advertencias insertados.

Controlar errores de SOAP

Analysis Services devuelve un error de SOAP cuando se producen las siguientes situaciones:

  • El mensaje SOAP que contiene el método XMLA no estaba bien formado o la instancia de Analysis Services no lo pudo validar.

  • Se ha producido un error de comunicaciones o de otro tipo que afecta al mensaje SOAP que contiene el método XMLA.

  • El método XMLA no se ejecutó en la instancia de Analysis Services.

Los códigos de error de SOAP para XMLstartA empiezan por "XMLForAnalysis", seguido de un punto y del código de resultado HRESULT hexadecimal. Por ejemplo, un código de error de "0x80000005" tiene el formato "XMLForAnalysis.0x80000005". Para obtener más información sobre el formato de error de SOAP, consulte la información sobre errores de SOAP en Simple Object Access Protocol (SOAP) 1.1 de W3C.

Información del código de error

En la tabla siguiente se muestra la información de código de error de XMLA incluida en la sección de detalles de la respuesta SOAP. Las columnas son los atributos de un error en la sección de detalles de un error de SOAP.

Nombre de columna

Tipo

Descripción

Se permiten NULL1

ErrorCode

UnsignedInt

Código de retorno que indica la ejecución correcta o el error del método. El valor hexadecimal debe convertirse en un valor UnsignedInt.

No

WarningCode

UnsignedInt

Código de retorno que indica una condición de advertencia. El valor hexadecimal debe convertirse en un valor UnsignedInt.

Description

String

Texto y descripción del error o la advertencia devueltos por el componente que generó el error.

Source

String

Nombre del componente que generó el error o la advertencia.

HelpFile

String

Ruta de acceso o dirección URL del tema o el archivo de Ayuda que describe el error o la advertencia.

1 Indica si los datos son obligatorios y deben proporcionarse o si son opcionales y se permite una cadena NULL en caso de que la columna no sea aplicable.

A continuación se muestra un ejemplo de un error de SOAP que se produjo al no poderse realizar una llamada a método:

<?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>

Controlar errores y advertencias

Analysis Services devuelve la propiedad Messages en el elemento root de un comando si se producen las siguientes situaciones después de ejecutarse dicho comando:

  • El método se ejecutó correctamente, pero se produjo un error en la instancia de Analysis Services después de la llamada a método correcta.

  • La instancia de Analysis Services devuelve una advertencia cuando el comando se ejecuta correctamente.

La propiedad Messages sigue al resto de las propiedades contenidas en el elemento root y puede contener uno o más elementos Message. A su vez, cada elemento Message puede contener un elemento error o warning único que describa cualquier error o advertencia, respectivamente, que se hayan producido para el comando especificado.

Para obtener más información sobre los errores y las advertencias contenidos en la propiedad Messages, vea Elemento Messages (XMLA).

Controlar errores durante la serialización

Si se produce un error después de que la instancia de Analysis Services haya comenzado a serializar la salida de un comando ejecutado correctamente, Analysis Services devuelve un elemento Exception en un espacio de nombres diferente en el punto del error. A continuación, la instancia de Analysis Services cierra todos los elementos abiertos para que el documento XML que se envía al cliente sea válido. La instancia también devuelve un elemento Messages que contiene la descripción del error.

Controlar errores y advertencias insertados

Analysis Services devuelve un elemento error o warning insertado para un comando si el método XMLA en sí se ejecutó correctamente, pero se produjo un error específico de un elemento de datos en los resultados devueltos por el método en la instancia de Analysis Services después de haberse realizado correctamente la llamada al método XMLA.

Analysis Services proporciona elementos error y warning insertados si se producen problemas específicos de una celda o de otros datos contenidos en un elemento root con el tipo de datos MDDataSet, como un error de seguridad o un error de formato de una celda. En estos casos, Analysis Services devuelve un elemento error o warning en el elemento Cell o row que contiene el error o la advertencia, respectivamente.

En el ejemplo siguiente se muestra un conjunto de resultados que contiene un error en el conjunto de filas devuelto de un método Execute utilizando el comando Statement.

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