无需指定分区名,如何自动获取SQL Server OLAP多维数据集分区脚本?
自动化获取SSAS度量值组的分区脚本
我需要对SQL Server的OLAP多维数据集做编目,在SSMS里手动操作的话,右键度量值组→「分区」→「属性」→「将操作脚本编写到新查询窗口」,就能拿到填充这个度量值组的数据源脚本。现在想把这个过程自动化,但找到的XMLA查询必须指定分区名,没法自动处理所有分区,求解决方案:
当前用的XMLA查询:
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis"> <RequestType>DISCOVER_PARTITION_STAT</RequestType> <Restrictions> <RestrictionList> <DATABASE_NAME>database_name</DATABASE_NAME> <CUBE_NAME>cube_name</CUBE_NAME> <MEASURE_GROUP_NAME>measure_group_name</MEASURE_GROUP_NAME> <PARTITION_NAME>partition_name</PARTITION_NAME> </RestrictionList> </Restrictions> <Properties> <PropertyList> <Catalog>database_name</Catalog> <Format>Tabular</Format> </PropertyList> </Properties> </Discover>
这个查询必须手动填PARTITION_NAME,没法自动化遍历所有分区,有没有只需要指定数据库名和度量值组名就能获取全部分区脚本的方法?
解决方案1:先批量获取分区列表,再生成脚本
先执行DISCOVER_PARTITIONS查询拿到目标度量值组下的所有分区:
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis"> <RequestType>DISCOVER_PARTITIONS</RequestType> <Restrictions> <RestrictionList> <DATABASE_NAME>database_name</DATABASE_NAME> <CUBE_NAME>cube_name</CUBE_NAME> <MEASURE_GROUP_NAME>measure_group_name</MEASURE_GROUP_NAME> </RestrictionList> </Restrictions> <Properties> <PropertyList> <Catalog>database_name</Catalog> <Format>Tabular</Format> </PropertyList> </Properties> </Discover>
拿到分区名列表后,用脚本(比如PowerShell、C#)循环遍历每个分区,自动替换你原来的XMLA查询里的PARTITION_NAME,批量获取每个分区的脚本。
解决方案2:直接用XMLA Script命令生成全量脚本
如果要一次性拿到整个度量值组的所有分区脚本,用XMLA的<Script>命令,指定数据库、多维数据集和度量值组即可:
<Script xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"> <ObjectDefinition> <DatabaseID>database_name</DatabaseID> <CubeID>cube_name</CubeID> <MeasureGroupID>measure_group_name</MeasureGroupID> </ObjectDefinition> <ScriptOptions> <ScriptPartitions>true</ScriptPartitions> <ScriptDataSources>true</ScriptDataSources> <ScriptBindings>true</ScriptBindings> </ScriptOptions> </Script>
执行这个查询后,会返回包含该度量值组所有分区完整定义的脚本,包括数据源连接、填充逻辑等,完全不需要手动指定分区名,直接满足自动化需求。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

