문제

XMLA 쿼리가있어서 분석 서비스 큐브의 상태와 마지막 처리 날짜를 XML로 반환합니다.

질문:

<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
  <RequestType>DISCOVER_XML_METADATA</RequestType>
  <Restrictions >
    <RestrictionList xmlns="urn:schemas-microsoft-com:xml-analysis">
      <DatabaseID>SSAS - Premium and Claims V2</DatabaseID>
      <CubeID>PDW04 1</CubeID>
      <ObjectExpansion>ReferenceOnly</ObjectExpansion>
    </RestrictionList>
  </Restrictions>
  <Properties />
</Discover>

결과:

<return xmlns="urn:schemas-microsoft-com:xml-analysis">
  <root xmlns="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:schema targetNamespace="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:sql="urn:schemas-microsoft-com:xml-sql" elementFormDefault="qualified">
      <xsd:element name="root">
        <xsd:complexType>
          <xsd:sequence minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="row" type="row" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:simpleType name="uuid">
        <xsd:restriction base="xsd:string">
          <xsd:pattern value="[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}" />
        </xsd:restriction>
      </xsd:simpleType>
      <xsd:complexType name="xmlDocument">
        <xsd:sequence>
          <xsd:any />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="row">
        <xsd:sequence>
          <xsd:element sql:field="METADATA" name="METADATA" type="xmlDocument" />
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
    <row>
      <xars:METADATA xmlns="http://schemas.microsoft.com/analysisservices/2003/engine" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:xars="urn:schemas-microsoft-com:xml-analysis:rowset">
        <Cube>
          <Name>Premium</Name>
          <ID>PDW04 1</ID>
          <CreatedTimestamp>2008-11-23T22:31:06</CreatedTimestamp>
          <LastSchemaUpdate>2009-01-22T00:50:13</LastSchemaUpdate>
          <LastProcessed>2009-01-07T22:28:34</LastProcessed>
          <State>Processed</State>
        </Cube>
      </xars:METADATA>
    </row>
  </root>
</return>

SQL Server 데이터베이스 테이블에 결과를 구문 분석하고 저장하는 Integration Services 패키지 에서이 XMLA 쿼리를 사용하고 싶습니다. 그러나 XMLA 쿼리를 실행하는 것처럼 보이는 유일한 작업은 "분석 서비스 실행 DDL"작업입니다.이 작업은 내가 알 수있는 한 쿼리 결과를 반환하는 방법이 없습니다.

누구든지 이것을 달성하는 방법에 대한 제안이 있습니까?

도움이 되었습니까?

해결책

실행 SQL 작업을 포함하여 SSI의 다양한 메커니즘을 통해 "일반"MDX/XMLA를 실행할 수 있지만 항상 내부에 랩핑됩니다. 최상위 방법으로 내부에 포장 할 수 없으므로 문제가 발생합니다.

가능한 두 가지 해결책이 있습니다.

  1. 관계형 데이터베이스 내부의 OpenQuery 호출을 사용하여 XMLA를 실행 SQL 작업 안에 랩핑하십시오. select * from OpenQuery ()와 같은 일을하고 실제로 SQL Server 내부에서 XML ResultSet을 구문 분석하는 작업을 잘 수행 할 수 있습니다.
  2. HTTP 액세스를 구성하여 SSAS 서버를 엽니 다 (http://www.microsoft.com/technet/prodtechnol/sql/2005/httpasws.mspx) 따라서 XMLA를 웹 서비스 호출로 보낼 수 있습니다. SSIS에는 귀하가 실행하고 결과를 소비하는 데 사용할 수있는 웹 서비스 작업이 있습니다.

이 두 옵션 모두 분명히 단점이 있습니다.

다른 팁

발견 명령 :

이것은 나에게 매우 잘 작동합니다.

XMLA 이름 공간을 사용하여 스크립트 작업을 만듭니다. 응답을 받으면 XMLA를 구문 분석하고 VB.NET DataTable에 추가하고 구문 분석 된 데이터를 SQL 테이블에 삽입하십시오.

SSAS 2008의 새로운 DMV 구문 또는 DMV 함수를 사용할 수도 있습니다. asp SSAS 2005 에서이 데이터를 표 형식으로 반환합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top