首页 > 解决方案 > 从存储过程处理表格多维数据集

问题描述

我有一个存储过程,它填充数据库中的几个表,这是表格 SSAS 多维数据集的数据源。当我完成加载表时,我想将多维数据集作为存储过程的最后一步进行处理。我找到了这段代码:

DECLARE @XMLA XML = '
  <Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <Process>
      <Object>
        <DatabaseID>' + @Database + '</DatabaseID>
      </Object>
      <Type>ProcessFull</Type>
      <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
    </Process>
  </Batch>
';

DECLARE @Command VARCHAR(MAX) = CONVERT(VARCHAR(MAX), @XMLA);
EXEC (@Command) AT SSAS;

它接受数据库名称,但我不知道如何让它在特定服务器或 SSAS 实例上运行。我的存储过程和多维数据集位于 Sql 服务器的不同命名实例上。有谁知道如何在 xmla 中嵌入服务器/实例名称或在指定实例上运行 xmla?

提前致谢。

标签: tsqlssasxmla

解决方案


我发现关键是使用链接服务器(和 TMSL,感谢 Mitch Wheat):

DECLARE @TMSL VARCHAR(MAX) = '{
  "refresh": {
    "type": "full",
    "objects": [
      {
        "database": ' + @DataBaseName + '
      }
    ]
  }
}';
 

EXEC (@TMSL) AT SSASTABULAR; -- linked server name

SSSTABULAR 是指向我的 ssas 多维数据集服务器实例的链接服务器。


推荐阅读