我有两个xmla查询(用于处理SSAS多维数据集),这两个查询已嵌入到两个单独的SQL Server计划作业中。这些作业在随机时间被一些代码触发,并且可能有一段时间这两个作业同时被触发。在这种情况下,一个作业(实际上是与排定作业相关联的XMLA查询)获得优先级,而另一个作业则一直等待,直到前一个作业完成。我想同时执行这两个xmla查询。有没有可能。这两个XMLA的结构如下:
<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Parallel>
<Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200">
<Object>
<DatabaseID>SSAS Database ID here</DatabaseID>
<CubeID>Cube ID here</CubeID>
</Object>
<Type>ProcessFull</Type>
<WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>
</Parallel>
</Batch>寻找可能的建议/答案。
发布于 2014-01-24 01:58:05
如果两条处理指令都访问一个公共对象(分区或维度),则其中一条必须等待另一条完成。Analysis Services -针对OLAP进行了优化-使用了非常粗略的粒度锁定模型:对分区或维度等对象的每次写入访问都会在此对象上放置一个写锁定,只有在作业完成后才会释放该写锁定-无论是成功还是出错。
如果两个处理作业仅访问不同的对象,则不会存在冲突,并且它们可以并行运行(例如,作业1处理维度A和B以及度量值组X,作业2处理维度C和D以及度量值组Y和Z)。
这种粗粒度的锁定是快速的一个方面,因为不需要检查您访问的每个数据行上的锁-这是大多数关系数据库的情况,这会导致一些开销。
https://stackoverflow.com/questions/21310402
复制相似问题