Pobieranie danych za pomocą XmlReader

Klasa XmlReader, która jest częścią przestrzeni nazw System.Xml w bibliotece klas .NET Framework, jest podobna do klasy AdomdDataReader. Obie klasy zapewniają szybki, niebuforowany, tylko do przekazywania dostęp do danych. Jeśli nie potrzebujesz analitycznego widoku danych w pamięci przy użyciu obiektu CellSet, obiekt XmlReader doskonale nadaje się do pobierania danych XML, szczególnie w przypadku dużych wolumenów danych. Ponieważ element XmlReader przesyła strumieniowo dane, nie musi pobierać i buforować wszystkich danych przed ujawnieniem danych obiektowi wywołującego. Natomiast jeśli używasz CellSet obiektu do konwertowania kodu XML dla odpowiedzi analizy na reprezentację modelu obiektów analitycznych, musisz poczekać na buforowanie wszystkich danych.

Klasa XmlReader zapewnia bezpośredni dostęp do XML for Analysis response otrzymanej przez ADOMD.NET, gdy wywoływana jest metoda ExecuteXmlReader obiektu AdomdCommand. Ponieważ pobrane dane są nieprzetworzonym plikiem XML, należy ręcznie przeanalizować dane i metadane. Po pobraniu danych obiekt XmlReader powinien zostać zamknięty.

Pobieranie danych i metadanych

Aby pobrać dane przy użyciu XmlReader klasy, wykonaj następujące kroki:

  1. Utwórz nowe wystąpienie obiektu.

    Wywołaj metodę Execute lub ExecuteXmlReader dla obiektu AdomdCommand, aby utworzyć wystąpienie XmlReader.

  2. Pobieranie danych.

    Gdy polecenie uruchomi zapytanie i zwróci element XmlReader, przeanalizuj dane i metadane. Dane i metadane XML są w formacie natywnym używanym przez dostawcę XML dla usługi Analysis. W przypadku większości dostawców XML dla analizy format natywny to format MDDataSet. Format MDDataSet zawiera zarówno dane, jak i metadane dla komórek w dobrze ustrukturyzowanym formacie. Aby uzyskać więcej informacji na temat formatu MDDataSet , zobacz XML dla specyfikacji analizy.

  3. Zamknij czytnik.

    Wywołaj metodę Close, gdy zakończysz korzystanie z obiektu XmlReader. Gdy element XmlReader jest otwarty, ma wyłączne użycie AdomdConnection obiektu, który uruchamia polecenie. Nie można uruchamiać żadnych poleceń przy użyciu tego <`xref:Microsoft.AnalysisServices.AdomdClient.AdomdConnection>, w tym utworzyć innego obiektu XmlReader lub AdomdDataReader, dopóki nie zamkniesz oryginalnego obiektu XmlReader.

Pobieranie danych za pomocą klasy XmlReader

Poniższy przykład uruchamia polecenie, pobiera dane jako obiekt XmlReader i wyświetla zawartość w konsoli.

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