XmlReader를 사용하여 데이터 검색

Microsoft .NET Framework 클래스 라이브러리에 대한 System.Xml 네임스페이스의 일부인 XmlReader 클래스는 XmlReader 클래스가 데이터에 대한 빠르고 캐시되지 않은 정방향 전용 액세스를 제공한다는 측면에서 클래스와 유사 AdomdDataReader 합니다. 개체를 사용하여 CellSet 데이터의 메모리 내 분석 뷰가 필요하지 않은 경우 XmlReader 개체는 특히 많은 양의 데이터에서 XML 데이터를 검색하는 데 적합합니다. XmlReader가 데이터를 스트리밍하기 때문에 XmlReader는 분석용 XML 응답을 분석 개체 모델 표현으로 변환하는 데 개체를 사용한 경우 CellSet 처럼 데이터를 호출자에게 노출하기 전에 모든 데이터를 검색하고 캐시할 필요가 없습니다.

XmlReader 클래스는 개체의 메서드 AdomdCommand 가 호출될 때 ADOMD.NET 받은 XML for Analysis 응답에 ExecuteXmlReader 대한 직접 액세스를 제공합니다. 검색된 데이터는 원시 XML이므로 데이터와 메타데이터를 수동으로 구문 분석해야 합니다. 데이터를 검색하는 즉시 XmlReader 개체를 닫아야 합니다.

데이터 및 메타데이터 검색

XmlReader 클래스를 사용하여 데이터를 검색하려면 다음 단계를 수행합니다.

  1. 개체의 새 인스턴스를 만듭니다.

    XmlReader 클래스의 새 인스턴스를 만들려면 개체의 Execute 메서드 또는 ExecuteXmlReader 메서드를 호출합니다AdomdCommand.

  2. 데이터를 검색합니다.

    명령이 쿼리를 실행하고 XmlReader를 반환한 후에는 데이터와 메타데이터를 구문 분석해야 합니다. XML 데이터 및 메타데이터는 XML for Analysis 공급자에서 사용되는 네이티브 형식으로 표현됩니다. 대부분의 XML for Analysis 공급자의 경우 네이티브 형식은 MDDataSet 형식입니다. MDDataSet 형식은 잘 구성된 형식으로 셀 세트에 대한 데이터와 메타데이터를 모두 제공합니다. MDDataSet 형식에 대한 자세한 내용은 XML for Analysis 사양을 참조하세요.

  3. 판독기를 닫습니다.

    XmlReader 개체 사용을 마치면 항상 메서드를 호출 Close 해야 합니다. XmlReader가 열려 있는 동안 해당 XmlReader는 명령을 실행하는 데 사용된 개체를 단독으로 사용합니다AdomdConnection. 원래 XmlReader를 닫을 때까지 다른 XmlReaderAdomdDataReader를 만드는 것을 <포함하여 'xref:Microsoft.AnalysisServices.AdomdClient.AdomdConnection>'을 사용하여 명령을 실행할 수 없습니다.

XmlReader에서의 데이터 검색 예

다음 예제에서는 명령을 실행하고 데이터를 XmlReader로 검색하여 파일 내용을 콘솔에 출력합니다.

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