首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理存储过程中的表格多维数据集

处理存储过程中的表格多维数据集
EN

Stack Overflow用户
提问于 2020-11-17 12:23:35
回答 2查看 621关注 0票数 0

我有一个存储过程,它填充db中的几个表,db是表格形式的SSAS多维数据集的数据源。当我装入完表后,我想把这个多维数据集作为存储过程中的最后一步来处理。我找到了这段代码:

代码语言:javascript
复制
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 server的不同命名instanceS上。有人知道如何在xmla中嵌入服务器/实例名或在指定实例上运行xmla吗?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-11-17 13:28:04

我发现关键是使用一个链接的服务器(以及TMSL,感谢米奇·麦子):

代码语言:javascript
复制
DECLARE @TMSL VARCHAR(MAX) = '{
  "refresh": {
    "type": "full",
    "objects": [
      {
        "database": ' + @DataBaseName + '
      }
    ]
  }
}';
 

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

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

票数 1
EN

Stack Overflow用户

发布于 2020-11-17 13:36:17

您可以在SQL代理中创建作业来处理多维数据集。然后,可以使用sp_start_job从存储过程中调用SQL代理作业。

https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-start-job-transact-sql?view=sql-server-ver15

通过这种方式,您可以处理来自不同存储进程的多维数据集,而不必将处理代码存储在每个多维数据集中。它还使更新变得更容易,以防您的多维数据集被移动到不同的服务器。您只需将SQL代理作业更新为指向新服务器。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64869330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档