통합 서비스에서 XMLA 쿼리의 결과를 사용하십시오
-
20-08-2019 - |
문제
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를 실행할 수 있지만 항상 내부에 랩핑됩니다. 최상위 방법으로 내부에 포장 할 수 없으므로 문제가 발생합니다.
가능한 두 가지 해결책이 있습니다.
- 관계형 데이터베이스 내부의 OpenQuery 호출을 사용하여 XMLA를 실행 SQL 작업 안에 랩핑하십시오. select * from OpenQuery ()와 같은 일을하고 실제로 SQL Server 내부에서 XML ResultSet을 구문 분석하는 작업을 잘 수행 할 수 있습니다.
- 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 에서이 데이터를 표 형식으로 반환합니다.
제휴하지 않습니다 StackOverflow