Recuperar datos mediante XmlReader

La clase XmlReader , parte del espacio de nombres System.Xml para la biblioteca de clases de Microsoft .NET Framework, es similar a la AdomdDataReader clase en que la clase XmlReader también proporciona acceso rápido, sin almacenamiento en caché y de solo avance a los datos. Si no se necesita una vista analítica en memoria de los datos que usan el CellSet objeto, el objeto XmlReader es idóneo para recuperar datos XML, especialmente para grandes cantidades de datos. Dado que XmlReader transmite datos, XmlReader no tiene que recuperar y almacenar en caché todos los datos antes de exponer los datos al llamador, como sería el caso si CellSet se utilizara un objeto para convertir la respuesta XML for Analysis en una representación del modelo de objetos analíticos.

La clase XmlReader proporciona acceso directo a la respuesta XML for Analysis recibida por ADOMD.net cuando ExecuteXmlReader se llama al método del AdomdCommand objeto. Debido a que los datos recuperados son XML sin formato, debe analizar los datos y metadatos de forma manual. En cuanto se recuperen los datos, se debe cerrar el objeto XmlReader .

Recuperar datos y metadatos

Para usar la clase XmlReader para recuperar datos, siga estos pasos:

  1. Crear una nueva instancia del objeto.

    Para crear una nueva instancia de la clase XmlReader , llame al Execute método o ExecuteXmlReader del AdomdCommand objeto.

  2. Recuperar datos.

    Una vez que el comando ejecuta la consulta y devuelve un XmlReader, debe analizar los datos y los metadatos. Los datos y metadatos XML se presentan en el formato nativo que utiliza 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 celdas en un formato bien estructurado. Para obtener más información sobre el formato MDDataSet , vea la especificación XML for Analysis.

  3. Cerrar el lector.

    Siempre debe llamar al Close método cuando haya terminado de utilizar el objeto XmlReader . Mientras un XmlReader está abierto, el XmlReader tiene el uso exclusivo del AdomdConnection objeto que se usó para ejecutar el comando. No podrá ejecutar ningún comando con ese <' XREF: Microsoft. AnalysisServices. AdomdClient. AdomdConnection>, incluida la creación de otro XmlReader o AdomdDataReader , hasta que cierre el XmlReaderoriginal.

Ejemplo de recuperación de datos desde XmlReader

En el ejemplo siguiente se ejecuta un comando y se recuperan los datos como XmlReader, lo que genera el contenido del archivo 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();
        }