Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर एजेंट अलर्ट

डेटाबेस व्यवस्थापक होने के नाते कई ज़िम्मेदारियाँ हैं, और यह जानना कि आपके SQL सर्वर पर क्या हो रहा है, उनमें से एक है। सक्रिय रहना और त्रुटियों के प्रति सतर्क रहना उन लक्षणों में से एक है जो किसी को एक महान डीबीए बनाता है। और मैं केवल असफल होने वाली चीजों के बारे में बात नहीं कर रहा हूं, जिसके बारे में ज्यादातर लोग सतर्क रहने के बारे में सोचते हैं; आपको प्रदर्शन समस्याओं के बारे में भी सचेत किया जा सकता है। SQL सर्वर के भीतर आपके पास SQL ​​सर्वर एजेंट अलर्ट बनाने की क्षमता है (जिसे मैं अभी से 'अलर्ट' कहूंगा), और यह GUI या T-SQL का उपयोग करके आसानी से पूरा किया जाता है।

SQL सर्वर एजेंट अलर्ट कॉन्फ़िगर करना

अलर्ट का उपयोग करने के लिए आपके पास डेटाबेस मेल और एक SQL एजेंट ऑपरेटर कॉन्फ़िगर होना चाहिए। मेरे सामने आए अधिकांश SQL इंस्टेंस में पहले से ही डेटाबेस मेल नौकरी विफलता सूचनाओं के लिए कॉन्फ़िगर किया गया है। यदि आपको इस सुविधा को स्थापित करने के बारे में अधिक जानकारी की आवश्यकता है, तो पुस्तकें ऑनलाइन विषय पर जाएँ, "डेटाबेस मेल कॉन्फ़िगर करें।"

एक कम ज्ञात कार्य ऑपरेटर को कॉन्फ़िगर कर रहा है। आप SSMS या T-SQL का उपयोग करके ऑपरेटर बना सकते हैं। एसएसएमएस के भीतर SQL सर्वर एजेंट का विस्तार करें, ऑपरेटर पर राइट क्लिक करें और नया ऑपरेटर चुनें। आपके पास एक नया डायलॉग बॉक्स खुलेगा जहां आप ऑपरेटर को एक नाम दे सकते हैं और सूचित करने के लिए ईमेल पता निर्दिष्ट कर सकते हैं। मैं ईमेल सूचनाओं के लिए वितरण समूह का उपयोग करना पसंद करता हूं। अधिकांश कंपनियों के पास SQL ​​​​पर्यावरण के लिए एक से अधिक व्यक्ति जिम्मेदार होते हैं और यदि आप एक वितरण समूह निर्दिष्ट करते हैं तो पूरी टीम को अलर्ट के बारे में सूचित किया जा सकता है। वितरण समूहों का उपयोग करने से लोगों को अलर्ट से जोड़ना या हटाना भी बहुत आसान हो जाता है।

नीचे न्यू ऑपरेटर डायलॉग का एक उदाहरण स्क्रीनशॉट है:

मैं टी-एसक्यूएल का उपयोग करना पसंद करता हूं ताकि मैं यह सुनिश्चित कर सकूं कि ऑपरेटर बनाना सर्वर बिल्ड टेम्पलेट का हिस्सा है। उपरोक्त ऑपरेटर बनाने के लिए उदाहरण कोड इस प्रकार है:

EXEC msdb.dbo.sp_add_operator @name = N'SQL_Alerts', 
  @enabled = 1, 
  @email_address = N'[email protected]';

एक बार जब आपके पास डेटाबेस मेल और ऑपरेटर कॉन्फ़िगर हो जाए तो आप अलर्ट बना सकते हैं और उन्हें ऑपरेटर को असाइन कर सकते हैं।

यदि SSMS का उपयोग कर रहे हैं, तो आप SQL सर्वर एजेंट और फिर अलर्ट का विस्तार कर सकते हैं। डिफ़ॉल्ट रूप से, कोई अलर्ट नहीं बनाया जाता है। यदि आप राइट क्लिक करते हैं और न्यू अलर्ट चुनते हैं, तो आपको नीचे दिए गए चित्र के समान एक स्क्रीन मिलेगी:

आप देखेंगे कि गंभीरता के तहत 25 गंभीरता कोड हैं। जैसा यह लगता है, त्रुटि स्तर की गंभीरता बताती है कि त्रुटि कितनी महत्वपूर्ण है। गंभीरता 10 सूचनात्मक है जबकि 19-25 घातक हैं और उन त्रुटियों के उत्पन्न होने पर आप सूचित करना चाहेंगे। उदाहरण के लिए, यदि गंभीरता 23 त्रुटि उत्पन्न हुई, तो सबसे अधिक संभावना है कि आपके डेटाबेस में से किसी एक में भ्रष्टाचार है। ये घातक त्रुटियां आपके सर्वर के प्रदर्शन को प्रभावित कर सकती हैं, जो बदले में ग्राहक अनुभव को प्रभावित करती हैं।

त्रुटि 825 के लिए एक अतिरिक्त चेतावनी है जिसे आपको बनाने की आवश्यकता है। त्रुटि 825, जैसा कि पॉल रैंडल ने अपने ब्लॉग पोस्ट में वर्णन किया है, एक I/O ऑपरेशन से संबंधित है जिसे SQL सर्वर को पुनः प्रयास करना था लेकिन वह अंततः सफल होता है (जबकि त्रुटियां 823 और 824 इंगित करता है कि एक I/O पुन:प्रयास कार्रवाई का पुन:प्रयास किया गया और अंततः विफल रहा)। त्रुटि 825 के बारे में जानना महत्वपूर्ण है क्योंकि यह आपको I/O मुद्दों के प्रति सचेत कर रहा है जो भविष्य में घातक हो सकते हैं। कोई भी पुन:प्रयास करने का प्रयास खराब है, आपको तब तक प्रतीक्षा नहीं करनी चाहिए जब तक कि कोई I/O कार्रवाई अधिसूचित होने में विफल हो जाती है। यदि आपको त्रुटि 825 संदेश मिलना शुरू हो जाते हैं, तो आपको तुरंत अपने संग्रहण और हार्डवेयर टीमों तक पहुंचने की आवश्यकता है।

आप नाम निर्दिष्ट करके और गंभीरता का चयन करके प्रत्येक अलर्ट बना सकते हैं। एरर 825 के लिए आप एरर चुनेंगे और नंबर टाइप करेंगे। ऑपरेटर के साथ के रूप में, मैं टी-एसक्यूएल का उपयोग करना पसंद करता हूं। अगर मैं किसी प्रक्रिया को आसानी से स्क्रिप्ट कर सकता हूं तो इसे पुन:उपयोग करना और सर्वर बिल्ड के हिस्से के रूप में शामिल करना बहुत आसान है।
नीचे आपको वह स्क्रिप्ट मिलेगी जो मैंने अपने SQL सर्वर 2014 डेवलपर वर्कस्टेशन पर उपयोग की है। यह स्क्रिप्ट प्रत्येक अलर्ट बनाती है और ऑपरेटर SQL_Alerts को अलर्ट के लिए एक सूचना जोड़ती है।

EXEC msdb.dbo.sp_add_alert @name = N'Severity 19 Error', 
  @message_id = 0,   @severity = 19,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 19 Error', 
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name = N'Severity 20 Error', 
  @message_id = 0,   @severity = 20,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 20 Error', 
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name=N'Severity 21 Error', 
  @message_id = 0,   @severity = 21,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 21 Error', 
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name = N'Severity 22 Error', 
  @message_id = 0,   @severity = 22,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 22 Error', 
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name = N'Severity 23 Error', 
  @message_id = 0,   @severity = 23,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 23 Error', 
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name = N'Severity 24 Error', 
  @message_id = 0,   @severity = 24,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 24 Error', 
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name = N'Severity 25 Error', 
  @message_id = 0,   @severity = 25,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 25 Error',
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name = N'Error 825', 
  @message_id = 825,  @severity = 0,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Error 825',
  @operator_name = N'SQL_Alerts', @notification_method = 1;

यदि आपने अनुसरण किया है, तो आपके पास डेटाबेस मेल कॉन्फ़िगर किया गया होगा, संभावित त्रुटियों के बारे में आपको या वितरण समूह को ईमेल करने के लिए एक ऑपरेटर बनाया जाएगा, और SQL सर्वर एजेंट अलर्ट गंभीरता 19 - 25 और त्रुटि 825 के लिए कॉन्फ़िगर किया गया होगा।

यह भी खूब रही। जब भी इनमें से किसी एक अलर्ट को ट्रिगर किया जाएगा तो आपकी टीम को एक ईमेल भेजा जाएगा। जैसा कि मैंने परिचय में उल्लेख किया है, ईवेंट अलर्ट के अलावा, अलर्ट को एक प्रदर्शन स्थिति के लिए कॉन्फ़िगर किया जा सकता है। उदाहरण के लिए, यदि स्मृति उपयोग एक निर्धारित सीमा से अधिक हो जाता है तो एक अलर्ट ट्रिगर किया जा सकता है। मैं आपको विभिन्न प्रदर्शन अलर्ट का पता लगाने और उन्हें बनाने के लिए प्रोत्साहित करता हूं जिनसे आपका संगठन लाभान्वित हो सकता है। SQL सर्वर प्रदर्शन स्थिति अलर्ट खोजने के लिए, नए अलर्ट संवाद बॉक्स में, प्रकार के लिए ड्रॉप डाउन बॉक्स पर क्लिक करें। वहां आपको SQL सर्वर प्रदर्शन स्थिति चेतावनी सूचीबद्ध दिखाई देगी। एक बार जब आप उस विकल्प को चुन लेते हैं तो आप उन ऑब्जेक्ट्स के प्रकारों को ब्राउज़ कर सकते हैं जिन पर आप प्रदर्शन स्थिति अलर्ट कॉन्फ़िगर कर सकते हैं।

जबकि हमने एक ऑपरेटर को अलर्ट प्रतिक्रिया के लिए असाइन किया है, आप SQL एजेंट कार्य को निष्पादित करने के लिए अलर्ट को कॉन्फ़िगर भी कर सकते हैं। हालांकि यह आपको ईवेंट प्रतिक्रिया कार्य करने के लिए कुछ लचीलापन देता है, लेकिन यह आसान सशर्त अलर्ट करने की क्षमता प्रदान नहीं करता है।

उन्नत अलर्टिंग के लिए SQL संतरी का उपयोग करना

अधिक उन्नत अलर्टिंग के लिए, आपको एक बेहतर टूल की आवश्यकता है। यह वह जगह है जहाँ SQL संतरी मदद कर सकता है। मेरी पसंदीदा SQL संतरी चेतावनी सुविधाओं में से एक है पर्यावरण के भीतर कुछ बदल जाने पर अलर्ट या कार्य करने के लिए कस्टम स्थितियां बनाने की क्षमता। उदाहरण के लिए, यदि किसी ने न्यूनतम या अधिकतम मेमोरी मान, संशोधित मैक्सडॉप या समांतरता के लिए लागत सीमा को बदल दिया है, तो आपको एक अलर्ट मिल सकता है या यहां तक ​​कि एक प्रक्रिया शुरू हो सकती है। यह सुविधा SQL संतरी v8 में पेश की गई थी, और ग्रेग गोंजालेज (ब्लॉग | @SQLsensei) ने इसके बारे में यहां ब्लॉग किया:"एसक्यूएल संतरी v8:इंटेलिजेंट अलर्टिंग रिडिफाइन्ड।"

इस सुविधा के साथ, आप एक ही अलर्ट में विभिन्न डेटाबेस के लिए कस्टम शर्तें भी बना सकते हैं। यदि आपने SQL एजेंट अलर्ट का उपयोग करके ऐसा करने का प्रयास किया है तो आपको प्रति डेटाबेस अलग अलर्ट बनाना होगा।

एक और बड़ी चेतावनी विशेषता विभिन्न अलर्ट शेड्यूल बनाने की क्षमता है। कई संगठनों में ऐसी टीमें होती हैं जो दिन के विभिन्न हिस्सों में जिम्मेदार होती हैं। कुछ के पास दिन के घंटों के दौरान उत्पादन डीबीए जिम्मेदार हो सकता है, जिसमें एक नेटवर्क ऑपरेशंस सेंटर रात की पाली को कवर करता है, फिर सप्ताहांत में एक ऑन-कॉल व्यक्ति होता है। क्या उचित टीमों को उनकी जिम्मेदारी के घंटों के दौरान सूचित करने के लिए अलर्ट शेड्यूल को अनुकूलित करने में सक्षम होना अच्छा नहीं होगा?

आप अलर्ट विंडोज बना सकते हैं (जैसा कि समय की खिड़की में है) और उन्हें अलग-अलग अलर्ट या समूहों से जोड़ सकते हैं। यह अलग-अलग समय के दौरान अलग-अलग अलर्ट सक्रिय होने और अलग-अलग समूहों को अलग-अलग समय पर अधिसूचित करने की अनुमति देता है। यह वास्तव में अच्छा है क्योंकि यह आपके अलर्ट को एक समर्थन कार्यक्रम का पालन करने देता है ताकि सही लोगों को सूचित किया जा सके। स्कॉट फॉलन एक ब्लॉग पोस्ट में इस सुविधा का विवरण देता है, "एसक्यूएल संतरी के साथ कॉल शेड्यूल पर अलर्टिंग," आपको विभिन्न ऑन-कॉल टीमों के लिए अलर्ट बनाने के माध्यम से चलता है।

प्रदर्शन सलाहकार और इवेंट मैनेजर की एक अन्य चेतावनी विशेषता अन्य प्रतिक्रियाओं को कॉन्फ़िगर करने की क्षमता है जैसे कि विंडोज प्रक्रिया को निष्पादित करना, इवेंट को डेटाबेस या त्रुटि लॉग में लॉग करना, एसएनएमपी ट्रैप को किसी अन्य निगरानी उपकरण जैसे एससीओएम, या यहां तक ​​कि एक प्रक्रिया को मारना . आपके विकल्प लगभग असीमित हैं कि एक निश्चित घटना होने पर आप क्या होने के लिए पूर्वनिर्धारित कर सकते हैं। SQL एजेंट अलर्ट अनुकूलन योग्य नहीं हैं।

सारांश

इस पोस्ट से महत्वपूर्ण बात यह है कि आपको त्रुटियों और प्रदर्शन की स्थिति के लिए सतर्क रहने की आवश्यकता है। यदि आपके पास SQL ​​संतरी जैसा कोई उपकरण नहीं है तो SQL एजेंट अलर्ट का उपयोग करना अभी भी एक अच्छी शुरुआत है।

अपनी अगली कुछ पोस्टों में, मैं इनमें से कुछ परफ़ॉर्मेंस को प्रभावित करने वाले अलर्ट पर नज़र डालूँगा और चर्चा करूँगा कि उनके आने पर आपको कौन-सी कार्रवाइयाँ करनी होंगी।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मल्टी-स्टेटमेंट टेबल वैल्यूड फंक्शन बनाम इनलाइन टेबल वैल्यूड फंक्शन

  2. SQL सर्वर प्रबंधन स्टूडियो (SSMS) में वस्तुओं को कैसे फ़िल्टर करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 19

  3. कॉलम के मान के आधार पर लगातार पंक्तियों को कैसे खोजें?

  4. एक सामान्य एमएस एसक्यूएल सर्वर प्रदर्शन संकेतक लागू करना

  5. SqlConnection SqlCommand SqlDataReader IDisposable