簡體   English   中英

如何以編程方式檢查SSAS數據庫/多維數據集是否正在處理?

[英]How can I programmatically check if an SSAS database/cube is processing?

我有一個應用程序,它將更新一個小維度並重建一個更大的多維數據集的度量組。

早上的建設有時需要一兩個小時。 我想從應用程序檢查這個特定數據庫中是否有任何處理,並向用戶發送一條消息,告知他們需要等待。

我檢查過的AMO對象都有一個State屬性,但這似乎只反映了當前狀態,並且似乎對可能正在進行的處理一無所知。 我認為這是因為在處理完成時會替換對象。

我現在看到的唯一選擇是根據這篇MSDN文章啟動自定義跟蹤,讓它運行一段時間,並檢查是否有任何進度事件。

我認為,由於顯而易見的原因,這不是我問題的可靠解決方案。 有沒有更好的辦法? 我希望像數據庫對象上的“IsProcessing”標志一樣簡單。

另一個可能的想法是查詢活動會話DMV並查看命令中是否有任何“進程”文本。 對我來說仍然感覺不太穩固。

任何和所有建議表示贊賞。

可能最好的方法是查看是否存在處理鎖定。 我沒有測試過不同的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
    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM