Abrufen von Daten mittels XmlReader

Die XmlReader-Klasse, die Teil des System.Xml-Namespace für die Microsoft .NET Framework-Klassenbibliothek ist, AdomdDataReader ähnelt der -Klasse, da die XmlReader-Klasse auch schnellen, nicht zwischengespeicherten Vorwärtszugriff auf Daten bietet. Wenn keine im Arbeitsspeicher gespeicherte, CellSet analytische Ansicht der Daten mithilfe des -Objekts benötigt wird, ist das XmlReader-Objekt perfekt zum Abrufen von XML-Daten geeignet, insbesondere für große Datenmengen. Da XmlReader Daten streamt, muss XmlReader nicht alle Daten abrufen und zwischenspeichern, bevor die Daten für den Aufrufer verfügbar sind. Dies wäre der Fall, CellSet wenn ein -Objekt verwendet würde, um die XML for Analysis-Antwort in eine analytische Objektmodelldarstellung zu konvertieren.

Die XmlReader-Klasse bietet direkten Zugriff auf die XML for Analysis Antwort, die von ADOMD.NET empfangen wird, wenn die -Methode ExecuteXmlReader des - AdomdCommand Objekts aufgerufen wird. Da es sich bei den abgerufenen Daten um nicht formatierte XML-Rohdaten handelt, müssen Sie die Daten und Metadaten manuell analysieren. Sobald die Daten abgerufen wurden, sollte das XmlReader-Objekt geschlossen werden.

Abrufen von Daten und Metadaten

Um die XmlReader-Klasse zum Abrufen von Daten zu verwenden, führen Sie die folgenden Schritte aus:

  1. Erstellen Sie eine neue Instanz des Objekts.

    Um eine neue Instanz der XmlReader-Klasse zu erstellen, rufen Sie die - oder Execute - ExecuteXmlReader Methode des -Objekts AdomdCommand auf.

  2. Abrufen von Daten.

    Nachdem der Befehl die Abfrage ausgeführt und einen XmlReader zurückgegeben hat, müssen Sie die Daten und Metadaten analysieren. Die XML-Daten und -Metadaten werden im systemeigenen Format angegeben, das vom XML for Analysis-Anbieter verwendet wird. Bei den XML for Analysis ist das native Format das MDDataSet-Format . Das MDDataSet-Format stellt sowohl Daten als auch Metadaten für Cellsets in einem gut strukturierten Format bereit. Weitere Informationen zum MDDataSet-Format finden Sie in der XML for Analysis Spezifikation.

  3. Schließen Sie den Leser.

    Sie sollten immer die -Methode Close aufrufen, wenn Sie die Verwendung des XmlReader-Objekts abgeschlossen haben. Während ein XmlReader geöffnet ist, verwendet dieser XmlReaderAdomdConnection exklusiv das -Objekt, das zum Ausführen des Befehls verwendet wurde. <Sie können keine Befehle mithilfe von "xref:Microsoft.AnalysisServices.AdomdClient.AdomdConnection>" ausführen, einschließlich der Erstellung eines weiteren XmlReader oder , bis Sie den ursprünglichen XmlReaderAdomdDataReader schließen.

Beispiel für das Abrufen von Daten aus XmlReader

Im folgenden Beispiel wird ein Befehl ausgeführt und die Daten als XmlReader abgerufen, und der Inhalt der Datei wird an die Konsole ausgegeben.

        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();
        }