Recuperación de datos mediante XmlReader

La clase XmlReader, que forma parte del espacio de nombres System.Xml para la biblioteca de clases de .NET Framework, es similar a la AdomdDataReader clase . Ambas clases proporcionan acceso rápido a los datos, sin caché y solo hacia adelante. Si no necesita una vista analítica en memoria de los datos mediante el CellSet objeto , el objeto XmlReader es perfecto para recuperar datos XML, especialmente para grandes cantidades de datos. Dado que XmlReader transmite datos, no tiene que recuperar y almacenar en caché todos los datos antes de exponer los datos al autor de la llamada. Por el contrario, si usa un CellSet objeto para convertir la respuesta XML for Analysis en una representación del modelo de objetos analíticos, debe esperar a que se almacenen en caché todos los datos.

La clase XmlReader proporciona acceso directo a la respuesta XML for Analysis recibida por ADOMD.NET cuando se llama al ExecuteXmlReader método del AdomdCommand objeto . Dado que los datos recuperados son XML sin procesar, debe analizar los datos y los metadatos manualmente. Tan pronto como se hayan recuperado los datos, se debe cerrar el objeto XmlReader .

Recuperación de datos y metadatos

Para recuperar datos mediante la XmlReader clase , siga estos pasos:

  1. Cree una nueva instancia del objeto .

    Llame al método Execute o ExecuteXmlReader del objeto AdomdCommand para crear una instancia de XmlReader.

  2. Recuperar datos.

    Una vez que el comando ejecuta la consulta y devuelve xmlReader, analice los datos y los metadatos. Los datos y metadatos XML están en el formato nativo que usa el proveedor XML for Analysis. Para la mayoría de los proveedores de XML for Analysis, el formato nativo es el formato MDDataSet . El formato MDDataSet proporciona datos y metadatos para los conjuntos de celdas en un formato bien estructurado. Para obtener más información sobre el formato MDDataSet , vea la especificación XML for Analysis.

  3. Cierre el lector.

    Llame al Close método cuando termine de usar el objeto XmlReader . Aunque xmlReader está abierto, tiene un uso exclusivo del AdomdConnection objeto que ejecuta el comando . No puede ejecutar ningún comando mediante esa <`xref:Microsoft.AnalysisServices.AdomdClient.AdomdConnection>, ni crear otro XmlReader o AdomdDataReader, hasta que cierre el XmlReader original.

Recuperación de datos de XmlReader

En el ejemplo siguiente se ejecuta un comando, se recuperan los datos como XmlReader y se escribe el contenido en la consola.

        void OutputDataWithXML()
        {
            //Open a connection to the local server.
            AdomdConnection conn = new AdomdConnection("Data Source=localhost");
            conn.Open();

            //Create a command to retrieve the data.
            AdomdCommand cmd = new AdomdCommand(@"WITH MEMBER [Measures].[FreightCostPerOrder] AS 
[Measures].[Reseller Freight Cost]/[Measures].[Reseller Order Quantity],  
FORMAT_STRING = 'Currency'

SELECT [Geography].[Geography].[Country].&[United States].Children ON ROWS, 
[Date].[Calendar].[Calendar Year] ON COLUMNS
FROM [Adventure Works]
WHERE [Measures].[FreightCostPerOrder]", conn);

            //Execute the command, retrieving an XmlReader.
            System.Xml.XmlReader reader = cmd.ExecuteXmlReader();

            //Do something with the reader: Parse data, Parse metadata,
            //                              Save for later loading into CellSet, etc.
            Console.WriteLine(reader.ReadOuterXml());

            //Close the reader, then the connection
            reader.Close();
            conn.Close();

            //Await user input.
            Console.ReadLine();
        }