gpt4 book ai didi

c# - 如何以编程方式检查 SSAS 数据库/多维数据集是否正在处理?

转载 作者:行者123 更新时间:2023-11-30 16:53:51 24 4
gpt4 key购买 nike

我有一个应用程序可以更新一个小维度并重建一个度量值组,该度量值组是更大立方体的一部分。

早上的构建有时需要一两个小时。我想从应用程序检查此特定数据库中是否正在进行任何处理,并向用户发回一条消息,告知他们需要等待。

我检查过的 AMO 对象都有一个 State 属性,但这似乎只反射(reflect)了当前状态,似乎对可能正在进行的处理一无所知。我认为这是因为处理完成后对象被替换了。

我现在看到的唯一选择是根据 this MSDN article 启动自定义跟踪,让它运行一下,看看有没有进度事件。

我认为,出于显而易见的原因,这不是解决我的问题的可靠方法。有没有更好的办法?我希望像数据库对象上的“IsProcessing”标志一样简单。

另一个可能的想法是查询事件 session DMV 并查看命令中是否有“Process”文本。对我来说仍然感觉不稳固。

感谢任何和所有建议。

最佳答案

最好的方法可能是查看是否存在处理锁。我还没有测试不同的 LOCK_TYPE值很多,但我认为如果此查询返回任何行,则表示正在处理您的多维数据集。

    SELECT *
FROM $SYSTEM.DISCOVER_LOCKS
WHERE LOCK_STATUS = 1
AND LOCK_OBJECT_ID = '<Object><DatabaseID>YourDatabaseID</DatabaseID></Object>'
AND (
LOCK_TYPE = 2
OR LOCK_TYPE = 4
OR LOCK_TYPE = 10
OR LOCK_TYPE = 16
)

关于c# - 如何以编程方式检查 SSAS 数据库/多维数据集是否正在处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31030826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com