Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以编程方式检查SSAS数据库/多维数据集是否正在处理?_C#_.net_Sql Server_Ssas_Olap - Fatal编程技术网

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

C# 如何以编程方式检查SSAS数据库/多维数据集是否正在处理?,c#,.net,sql-server,ssas,olap,C#,.net,Sql Server,Ssas,Olap,我有一个应用程序,它可以更新一个小维度,并重建一个作为更大立方体一部分的度量值组 早晨的锻炼有时需要一两个小时。我想从应用程序中检查此特定数据库中是否正在进行任何处理,并向用户发送一条消息,告知他们需要等待 我检查过的AMO对象都有一个状态属性,但这似乎只反映了当前的状态,似乎对可能正在进行的处理一无所知。我假设这是因为处理完成后对象被替换 我现在看到的唯一选择是根据启动一个自定义跟踪,让它运行一段时间,并检查是否有任何进度事件 我认为,出于明显的原因,这不是解决我问题的可靠办法。有更好的办法吗

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

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

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

我现在看到的唯一选择是根据启动一个自定义跟踪,让它运行一段时间,并检查是否有任何进度事件

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

另一个可能的想法是查询活动会话DMV,查看命令中是否有“进程”文本。我还是觉得不牢靠


感谢所有建议。

最好的办法可能是查看是否存在处理锁定。我还没有测试过不同的值,但是我认为如果这个查询返回任何行,那么您的多维数据集正在被处理

    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
    )
选择*
从$SYSTEM.DISCOVER\u锁
其中LOCK_STATUS=1
和LOCK_OBJECT_ID='YourDatabaseID'
及(
锁定类型=2
或锁定类型=4
或锁定类型=10
或锁定类型=16
)

谢谢您的回复,我会试一试的。这可能是一个愚蠢的后续问题,但我看到LOCK_OBJECT_ID位于数据库级别。我们是否假设,如果正在处理单个度量值组,那么在数据库级别仍然会有一个锁?是的。测试它,但我尝试处理一个度量值组,并得到了一个数据库级锁。