एक समस्या है जब कई उपयोगकर्ता एक ही घन को एक साथ संसाधित कर सकते हैं और परिणामस्वरूप घन की प्रक्रिया विफल हो जाती है। तो मुझे यह जांचने की ज़रूरत है कि वर्तमान पल पर कुछ घन प्रसंस्करण कर रहा है या नहीं।यह निर्धारित करने के लिए कि अब कौन सा एसएसएएस क्यूब प्रसंस्करण कर रहा है?
उत्तर
मुझे नहीं लगता कि आप किसी घन को संसाधित होने से रोक सकते हैं अगर कोई और इसे पहले से संसाधित कर रहा है।
SELECT CUBE_NAME, LAST_DATA_UPDATE FROM $System.MDSCHEMA_CUBES
या realted एसक्यूएल सर्वर उदाहरण पर sys.process तालिका जाँच अगर यह चल रहा है देखने के लिए: आप क्या कर सकते "सहायता" पिछली बार जब घन संसाधित किया गया था जांच करने के लिए एक MDX क्वेरी है:
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
यदि कोई घन प्रसंस्करण हो रहा है तो आपको "एमएसडीर्च" नामक टास्क मैनेजर में नौकरी चलने वाली नौकरी दिखाई देगी। सुनिश्चित नहीं है कि आप कैसे बता सकते हैं कि कौन सा है।
धन्यवाद! मैं इसे देख लूंगा। – Alekzander
मुझे इसी तरह की समस्या थी और एसएसएएस सर्वर पर प्रदत्त DISCOVER_LOCKS
पंक्ति का उपयोग कर इसे हल किया गया।
<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>
: उस सर्वर रिटर्न, वहाँ है कि इस तरह तरह का लग
row
तत्वों का एक गुच्छा होना चाहिए
<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>
एक्सएमएल में ऐसा करने के लिए, पहली बार सर्वर पर निम्न XMLA क्वेरी बनाने
इस उदाहरण में, Object
तत्व LOCK_OBJECT_ID
और LOCK_TYPE
तत्व के तहत नोट करें। माइक्रोसॉफ्ट documentation के मुताबिक, LOCK_TYPE
में से 4 प्रोसेसिंग कार्य के कारण एक लिखित लॉक इंगित करता है। इसलिए यदि आप LOCK_TYPE
4 और LOCK_OBJECT_ID/Object/CubeID
क्वेरी परिणामों में दिए गए row
तत्व के लिए रुचि रखने वाले घन की आईडी से मेल खाते हैं तो आपको यह पता लगाने में सक्षम होना चाहिए कि क्या घन संसाधित किया जा रहा है।
शायद पहले से सूचीबद्ध किए गए लोगों के लिए बेहतर दृष्टिकोण SQL सर्वर प्रोफाइलर विश्लेषण सर्वर पर गतिविधि देखने के लिए उपयोग करना होगा। जैसा कि पहले से कहा गया है, वर्तमान लोकप्रिय उत्तर में दो त्रुटियां हैं, पहला विकल्प केवल घन संसाधित होने के आखिरी बार दिखाता है। और दूसरा विकल्प केवल दिखाता है कि कुछ चल रहा है या नहीं। लेकिन यह आपको नहीं बताता कि क्या चल रहा है और क्या होगा यदि आपका घन SQL सर्वर से प्रसंस्करण नहीं कर रहा था लेकिन एक अलग डेटा स्रोत?
SQL सर्वर प्रोफाइलर का उपयोग न केवल आपको बताएगा कि कुछ प्रसंस्करण हो रहा है लेकिन यह भी प्रसंस्करण के विवरण के बारे में बताएगा। अधिकांश घटनाएं जिन्हें आप फ़िल्टर कर सकते हैं। देखें प्रगति रिपोर्ट वर्तमान घटनाएं यदि आप वास्तविक समय की जानकारी चाहते हैं ... यह आमतौर पर डेटा की अग्नि-खुराक से अधिक जानकारी प्राप्त करने के लिए बहुत अधिक है, लेकिन आपको अच्छी तरह से पता चल जाएगा कि कम से कम एक प्रक्रिया चल रही है। देखें प्रगति रिपोर्ट शुरू करें और समाप्त करें घटनाएं केवल वर्तमान में संसाधित होने जैसी बेहतर जानकारी प्राप्त करने के लिए, विभाजन स्तर तक भी। अच्छी जानकारी वाले अन्य कार्यक्रमों में कमांड स्टार्ट/एंड और क्वेरी प्रारंभ/समाप्ति शामिल हैं।
उपयोग इस कोड चल प्रक्रियाओं को चुनने के लिए: (OLAP में इस पर अमल)
select *
from $system.discover_Sessions
where session_Status = 1
और यह कोड prossesess चल रद्द करने के लिए!कृपया उदाहरण की तरह चल रहा है SESSISONS_SPID को पीआईडी बदलने के लिए:
<Cancel xmlns ="http://schemas.microsoft.com/analysisservices/2003/engine">
<SPID>92436</SPID>
<CancelAssociated>1</CancelAssociated>
</Cancel<
धन्यवाद! यह वास्तव में यह निर्धारित करने में मदद करता है कि कौन सा घन प्रसंस्करण कर रहा है! – Alekzander
डिएगो, आपके उत्तर के लिए धन्यवाद! – Alekzander
कोई समस्या नहीं, जवाब के रूप में वोट ans चिह्न को याद रखें अगर यह आपको – Diego
में मदद करता है तो पहला अनुरोध केवल उस समय के बारे में जानकारी देता है जब CUBE अपडेट किया गया था। दूसरा अनुरोध यह निर्धारित करने में मदद नहीं करता कि कौन सी घन प्रसंस्करण कर रहा है, लेकिन यह दिखाता है कि विश्लेषण सेवाएं कुछ कर रही हैं। मैं इसे शांत कर रहा हूं जब तक कि किसी अन्य परिस्थितियों में मदद मिलती है। – Alekzander