看到DMVs,DBA應該都很熟悉,不過這個是Analysis Services(AS)的DMVs,不是SQL Server(SQL)的DMVs,使用起來是有差異的喔
- 工具:SQL的DMVs是用Database Engine Query,而AS的DMVs得用MDX Query或DMX Query
- 查詢語法:SQL的用的是Transact-SQL的Select,而AS的是SELECT (DMX)
- XMLA Query
<RequestType>DBSCHEMA_CATALOGS</RequestType>
<Restrictions>
<RestrictionList>
</RestrictionList>
</Restrictions>
<Properties>
<PropertyList>
<Content>Data</Content>
</PropertyList>
</Properties>
</Discover>
- MDX Query
SELECT * FROM
$SYSTEM.DBSCHEMA_CATALOGS
比較一下XMLA Query與MDX Query,同樣使用DBSCHEMA_CATALOGS這個Schema Rowset,MDX Query只要一行較熟悉的Select,就解決了,而就結果集來說,MDX Query回傳的是容易讀取與複製的資料表格式呢,比較起來是不是簡單很多
下面示範取得Measures與Dimension的Metadata
Measures的
-- Measures details
SELECT [CUBE_NAME],
[CATALOG_NAME],
[MEASUREGROUP_NAME],
[MEASURE_UNIQUE_NAME],
[MEASURE_NAME],
[MEASURE_UNIQUE_NAME],
[MEASURE_CAPTION],
[DESCRIPTION] + [EXPRESSION] AS
[Description]
FROM $SYSTEM.MDSCHEMA_MEASURES
WHERE [CUBE_NAME]= 'Adventure Works'
ORDER BY [MEASUREGROUP_NAME]
Dimension的
-- Dimensions details
SELECT [CUBE_NAME],
[CATALOG_NAME],
[DIMENSION_UNIQUE_NAME] AS Dim_Name,
LEVEL_NAME AS Attribute_Name,
[LEVEL_UNIQUE_NAME] AS
Dimension_Attribute_Level,
[LEVEL_CAPTION],
[DESCRIPTION] AS [Description]
FROM $SYSTEM.MDSCHEMA_LEVELS
WHERE
--[LEVEL_NUMBER] <> 0
--AND
[LEVEL_IS_VISIBLE]
AND [CUBE_NAME]= 'Adventure Works'
看到這有沒有覺得取得Cube的Metadata很容易啊,這對於要出Cube的文件會方便,下面提供幾個很有參考價值的連結
0 意見:
張貼留言