SQL सर्वर में लंबे समय तक चलने वाले प्रश्नों की निगरानी करने का सबसे अच्छा तरीका क्या है?


10

मुझे अपने डेटाबेस के लिए काफी लंबे समय से चल रहे प्रश्नों (डेटा के बड़े सेट को अपडेट करते हुए अनुक्रमणिका को फिर से बनाना) चलाना है। क्या SQL सर्वर प्रबंधन स्टूडियो में क्वेरी चलाने और हर घंटे या उस पर जाँच करने का कोई विकल्प है? मुझे ईमेल किया जाना चाहिए या जब यह किया जाता है तो एक संदेश भेजा जाता है, लेकिन इसके लिए सबसे अच्छा उपकरण नहीं जानता।

जवाबों:


4

Gaius पोस्ट के बाद: आप एक .SQL स्क्रिप्ट बना सकते हैं, जो आपको स्क्रिप्ट के सामने उपयोग db के साथ क्या चाहिए -> ऑपरेटिंग सिस्टम प्रकार की एक SQL एजेंट कार्य बनाएँ जो स्क्रिप्ट को कॉल करता है:

sqlcmd -E -S SERVERNAME -i "c: \ yourSCRIPT.sql" -o "C: \ YourSCRIPT_LOG.log"

नया कदम जोड़ें और ईमेल भेजने के लिए msdb.dbo.sp_send_dbmail प्रक्रिया का उपयोग करें । यह सुविधा मेल के अंदर प्रदर्शित करने के लिए अनुकूलित की जा सकती है स्क्रिप्ट के निष्पादन की पुष्टि करने के लिए एसक्यूएल तालिकाओं से एक विशिष्ट क्वेरी ... उदाहरण के लिए आपके पुनर्निर्माण अनुक्रमितों के dbcc showcontig।


1

क्या आपको एसक्यूएल नौकरियों का उपयोग करने का विकल्प मिला है? आप वहां से सूचनाएँ और लाइक कर सकते हैं। जहां तक ​​आंतरायिक सूचनाएं प्राप्त करने की आवश्यकता है, उसे संग्रहीत प्रक्रियाओं आदि के भीतर कुछ कोड की आवश्यकता होगी।


1

हां, बस xp_sendmail का उपयोग करें । आप पूर्व-निर्धारित संदेश, या SQL कथन के परिणाम आसानी से भेज सकते हैं। यह सुविधा SQL Server 6.5 के बाद से उपलब्ध है, हालांकि यह Denali में बाधित होने के कारण है - यदि यह आपके ऑपरेशन का एक स्थायी हिस्सा होने जा रहा है, तो आपको डेटाबेस मेल का उपयोग करना चाहिए जो बहुत अधिक "उद्यम" है।


1

मैं हमेशा "EventLog" तालिका में संदेश लिखता हूं। बड़ी मात्रा में डेटा संसाधित करते समय, मैं डेटा को चंक्स में प्रबंधित करता हूं, और हर चंक के बाद EventLog में स्थिति अपडेट लिखता हूं।

जब मैं लंबे समय तक चलने वाली प्रक्रिया की प्रगति पर जांच करना चाहता हूं, तो मैं बस EventLog तालिका को क्वेरी करता हूं।

आउटपुट का उदाहरण:

-------------------
- मेरा बड़ा अपडेट -
-------------------
शुरू: 2011-05-03 10:00:00

प्रक्रिया के लिए रिकॉर्ड: 1,000,000
विखंडू: २००

--- चंक १ ---
MyTable को अपडेट करने का प्रयास कर रहा है
रिकॉर्ड अपडेटेड: 5000
अभिलेख शेष: 995,000
थ्रूपुट: प्रति सेकंड 4210 रिकॉर्ड

--- चंक 2--
MyTable को अपडेट करने का प्रयास कर रहा है
रिकॉर्ड अपडेटेड: 5000
अभिलेख शेष: 990,000
थ्रूपुट: प्रति सेकंड 3555 रिकॉर्ड

--- चंक ३-
आदि।

मुझे यह भी पता लगाने के लिए कि कब मैसेज लिखा गया है, किस प्रक्रिया ने मैसेज लिखा है, आदि को ट्रैक करने के लिए EventLog टेबल में कॉलम हैं। मेरे उदाहरण में उस जानकारी को शामिल नहीं करने के लिए क्षमा करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.