我有一个存储过程,它填充db中的几个表,db是表格形式的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 server的不同命名instanceS上。有人知道如何在xmla中嵌入服务器/实例名或在指定实例上运行xmla吗?
提前谢谢。
发布于 2020-11-17 13:28:04
我发现关键是使用一个链接的服务器(以及TMSL,感谢米奇·麦子):
DECLARE @TMSL VARCHAR(MAX) = '{
"refresh": {
"type": "full",
"objects": [
{
"database": ' + @DataBaseName + '
}
]
}
}';
EXEC (@TMSL) AT SSASTABULAR; -- linked server nameSSASTABULAR是指向我的ssas多维数据集服务器实例的链接服务器。
发布于 2020-11-17 13:36:17
您可以在SQL代理中创建作业来处理多维数据集。然后,可以使用sp_start_job从存储过程中调用SQL代理作业。
通过这种方式,您可以处理来自不同存储进程的多维数据集,而不必将处理代码存储在每个多维数据集中。它还使更新变得更容易,以防您的多维数据集被移动到不同的服务器。您只需将SQL代理作业更新为指向新服务器。
https://stackoverflow.com/questions/64869330
复制相似问题