Abrufen von Daten mithilfe von XmlReader

Die XmlReader-Klasse, die Teil des System.Xml-Namespace für die .NET Framework-Klassenbibliothek ist, ähnelt der AdomdDataReader Klasse. Beide Klassen bieten schnellen, nicht zwischengespeicherten Zugriff auf die Daten, der nur vorwärtsgerichtet ist. Wenn Sie keine speicherinterne, analytische Ansicht der Daten mithilfe des CellSet Objekts benötigen, eignet sich das XmlReader-Objekt perfekt zum Abrufen von XML-Daten, insbesondere für große Datenmengen. Da XmlReader Daten streamt, muss er nicht alle Daten abrufen und zwischenspeichern, bevor die Daten dem Aufrufer verfügbar werden. Wenn Sie dagegen ein CellSet Objekt verwenden, um die XML für Analyseantwort in eine Analyseobjektmodelldarstellung zu konvertieren, müssen Sie warten, bis alle Daten zwischengespeichert werden.

Die XmlReader-Klasse bietet direkten Zugriff auf die xml for Analysis-Antwort, die von ADOMD.NET empfangen wird, wenn die ExecuteXmlReader Methode des AdomdCommand Objekts aufgerufen wird. Da die abgerufenen Daten unformatierte XML-Daten sind, 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

Führen Sie die folgenden Schritte aus, um Daten mithilfe der XmlReader Klasse abzurufen:

  1. Erstellen Sie eine neue Instanz des Objekts.

    Rufen Sie die Execute Oder-Methode ExecuteXmlReader für das AdomdCommand Objekt auf, um eine XmlReader Instanz zu erstellen.

  2. Daten abrufen.

    Nachdem der Befehl die Abfrage ausgeführt und einen XmlReader zurückgegeben hat, analysieren Sie die Daten und Metadaten. Die XML-Daten und -Metadaten liegen im systemeigenen Format vor, das vom XML for Analysis-Anbieter verwendet wird. Für die meisten XML für Analyseanbieter ist das systemeigene Format das MDDataSet-Format . Das MDDataSet-Format stellt sowohl Daten als auch Metadaten für Zellenets 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.

    Rufen Sie die Close Methode auf, wenn Sie die Verwendung des XmlReader-Objekts abgeschlossen haben. Während ein XmlReader geöffnet ist, wird das AdomdConnection Objekt exklusiv verwendet, das den Befehl ausführt. Sie können über diese <`xref:Microsoft.AnalysisServices.AdomdClient.AdomdConnection> keine Befehle ausführen, einschließlich der Erstellung eines weiteren XmlReader oder AdomdDataReader, bis Sie den ursprünglichen XmlReader schließen.

Abrufen von Daten aus XmlReader

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

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