多個用戶可以同時處理相同的多維數據集並因此處理多維數據集失敗而出現問題。所以我需要檢查當前是否正在處理某個多維數據集。如何確定現在正在處理哪個SSAS立方體?
回答
我不認爲你可以防止處理立方體,如果其他人已經處理它。你可以做的「幫助」。在運行MDX查詢,以檢查上次多維數據集處理:
SELECT CUBE_NAME, LAST_DATA_UPDATE FROM $System.MDSCHEMA_CUBES
或檢查的realted SQL Server實例的sys.process表,看它是否正在運行:
select spid, ecid, blocked, cmd, loginame, db_name(dbid) Db, nt_username, net_library, hostname, physical_io,
login_time, last_batch, cpu, status, open_tran, program_name
from master.dbo.sysprocesses
where spid > 50
and loginame <> 'sa'
and program_name like '%Analysis%'
order by physical_io desc
go
我有類似的問題,並通過使用SSAS服務器上提供的DISCOVER_LOCKS
行集解決它。要做到這一點,首先進行如下XMLA查詢到服務器:
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
<RequestType>DISCOVER_LOCKS</RequestType>
<Restrictions>
<RestrictionList>
<!-- I tried using this, but it wasn't working and Microsoft documentation was little help. -->
</RestrictionList>
</Restrictions>
<Properties>
<PropertyList>
<Catalog>My_SSAS_Database</Catalog>
<Format>Tabular</Format>
</PropertyList>
</Properties>
</Discover>
在XML服務器返回的,應該有一堆row
元素,看起來有點像這樣:
<row>
<SPID>388303</SPID>
<LOCK_ID>0CC320DB-6B71-4341-B484-8D0A6C403AB9</LOCK_ID>
<LOCK_TRANSACTION_ID>335C5EE8-83C3-44D5-A653-655F933A0D2D</LOCK_TRANSACTION_ID>
<LOCK_OBJECT_ID>
<Object>
<DatabaseID>My_SSAS_Database</DatabaseID>
<CubeID>My_Cube</CubeID>
<MeasureGroupID>My_Measure_Group</MeasureGroupID>
<PartitionID>My_Partition</PartitionID>
</Object>
</LOCK_OBJECT_ID>
<LOCK_STATUS>1</LOCK_STATUS>
<LOCK_TYPE>4</LOCK_TYPE>
<LOCK_CREATION_TIME>2014-02-04T22:22:07.71</LOCK_CREATION_TIME>
<LOCK_GRANT_TIME>2014-02-04T22:22:07.71</LOCK_GRANT_TIME>
</row>
在此示例中,請注意LOCK_OBJECT_ID
和LOCK_TYPE
元素下的Object
元素。根據Microsoft documentation,4的LOCK_TYPE
表示由於處理任務而導致的寫入鎖定。因此,如果LOCK_TYPE
爲4,並且LOCK_OBJECT_ID/Object/CubeID
與查詢結果中給定row
元素感興趣的多維數據集的ID相匹配,則應該能夠確定是否正在處理多維數據集。
對於已列出的可能更好的方法是使用SQL Server Profiler觀察分析服務器上的活動。如前所述,目前流行的答案有兩個缺陷,第一個選項僅顯示立方體已經處理的最後時間。而第二個選項只顯示是否正在運行。但它並沒有告訴你什麼在運行,以及如果你的多維數據集不是從SQL服務器處理,而是從不同的數據源處理呢?
利用SQL Server Profiler不僅可以告訴你是否正在處理某些內容,還會告訴你處理內容的細節。大部分事件可以過濾掉。手錶進度報告當前事件,如果你想要的是實時信息...通常太多的數據的消息來獲得真正的信息,但你會知道至少有一個過程正在進行。觀看進度報告開始和結束事件僅用於獲取更好的信息,例如當前正在處理的內容,甚至是分區級別。其他具有良好信息的事件包括:命令開始/結束和查詢開始/結束。
使用此代碼來選擇正在運行的進程:(OLAP中執行此)
select *
from $system.discover_Sessions
where session_Status = 1
而且這個代碼取消運行prossesess!請更改PID運行SESSISONS_SPID 像例如:
<Cancel xmlns ="http://schemas.microsoft.com/analysisservices/2003/engine">
<SPID>92436</SPID>
<CancelAssociated>1</CancelAssociated>
</Cancel<
謝謝!它確實有助於確定哪個多維數據集正在處理! – Alekzander 2014-10-13 11:03:53
- 1. 確定處理SSAS立方體的最大頻率的準則?
- 2. SSAS:在立方體
- 3. SSAS立方體度量不正確
- 4. SSAS:如何設計我的立方體
- 5. SSAS中的基準測試立方體處理
- 6. 萬行的尺寸在ssas立方體
- 7. SSAS:來自多個立方體實例的中央立方體
- 8. SSAS立方體開發
- 9. SSAS立方體分組
- 10. SSAS處理髮生在哪裏
- 11. 如何確定我正在使用ExtJs在changeHandler中處理哪個菜單項?
- 12. 正確的方式來實現獨立的Grails批處理?
- 13. Opengl 3D立方體將無法在Windows上正確呈現
- 14. 實現SSAS立方體的TIME SPAN/PERIOD尺寸的方法
- 15. 使用SSIS包在SSAS中執行2個立方體
- 16. .text()立即正在處理
- 17. JPA如何確定哪個類正在調用方法?
- 18. SSAS立方體設計 - MDX很慢
- 19. 關聯SSAS立方體中的二維
- 20. SSAS條件立方體計算成員
- 21. 爲什麼要構建SSAS立方體?
- 22. SSAS立方體設計建議
- 23. SSAS MDX - 如何改變在立方體中總結作品的方式?
- 24. 如何正確處理AVAudioPlayer在objective-c
- 25. 如何正確處理javascript重定向?
- 26. 呈現一個立方體
- 27. 如何確定哪些功能正在使用哪個頭?
- 28. SSAS在哪裏?
- 29. 如何識別某個HTTPD進程正在處理哪個URL?
- 30. 如何確定正在呈現哪些JSP頁面?
迭戈,謝謝您的回答! – Alekzander 2012-08-10 11:49:06
沒有問題,記住投票答案標記爲答案,如果它幫助你 – Diego 2012-08-10 11:54:40
第一次請求只給出關於更新多維數據集時的信息。 第二個請求無助於確定正在處理哪個多維數據集,但它表明Analysis Services正在執行某些操作。 我很舒服,在另一種情況下有幫助。 – Alekzander 2012-08-10 12:04:48