परिचय
SQL सर्वर और डेटा में सभी प्रगति के साथ, यह बहुत अच्छा लगता है कि अलर्ट और ऑपरेटर जैसे मूल SQL उपकरण अभी भी उपलब्ध हैं। वे प्रमुख SQL सर्वर एजेंट सुविधाएँ हैं जो SQL सर्वर स्वचालन में किसी भी चीज़ से संबंधित हैं।
उनकी भूमिकाएं स्पष्ट हैं:
- अलर्ट, कॉन्फ़िगर किए जाने पर, डेटाबेस व्यवस्थापकों को बताएं कि कोई निर्दिष्ट घटना कब हुई है।
- एक ऑपरेटर SQL सर्वर के भीतर परिभाषित एक ऑब्जेक्ट है जो किसी भी व्यक्ति या समूह को मैप करता है जो इन घटनाओं के होने पर सूचनाएं प्राप्त कर सकता है।
घटनाओं के प्रकार
SQL सर्वर घटनाओं को विंडोज एप्लिकेशन लॉग में रिकॉर्ड करता है - हम इसे ऑपरेटिंग सिस्टम स्तर पर विंडोज इवेंट व्यूअर के माध्यम से एक्सेस कर सकते हैं। SQL सर्वर एजेंट एप्लिकेशन लॉग और आग अलर्ट पढ़ सकता है जब चीजों की 2 श्रेणियों के बीच एक मेल होता है:1) एप्लिकेशन लॉग में रिकॉर्ड की गई घटनाएं 2) एक व्यवस्थापक द्वारा परिभाषित एक अलर्ट।
तीन मुख्य प्रकार के आयोजन होते हैं:
- SQL सर्वर इवेंट
- SQL सर्वर प्रदर्शन की स्थिति
- WMI इवेंट
SQL सर्वर इवेंट बनाना
हम SQL सर्वर एजेंट के अंतर्गत ऑब्जेक्ट एक्सप्लोरर में अलर्ट नोड पर राइट-क्लिक करके SQL सर्वर एजेंट अलर्ट बनाना शुरू करते हैं। यह चित्र 2 में दिखाई गई विंडो को खोलता है जहां आप अलर्ट का नाम, उसका प्रकार (इस मामले में SQL सर्वर इवेंट अलर्ट), डेटाबेस स्कोप और अलर्ट की स्थिति निर्दिष्ट करते हैं।
किसी शर्त को निर्दिष्ट करने का सबसे आसान तरीका गंभीरता के स्तर का उपयोग करना है। और SQL सर्वर में त्रुटि संदेशों की पूरी सूची प्राप्त करने के लिए, आपको sys.messages को क्वेरी करने की आवश्यकता है। ध्यान दें कि इस दृश्य में 309408 पंक्तियाँ हैं इसलिए फ़िल्टर का उपयोग करना एक अच्छा विचार है - इसलिए मेरी क्वेरी में, मैंने कमांड के माध्यम से अंग्रेजी के लिए फ़िल्टर किया है।
अंजीर। 1. अलर्ट नोड
-- Listing 1: SQL Server Error Messages use msdb go SELECT * FROM sys.messages where language_id=1033 order by severity;
चित्र 2. SQL सर्वर ईवेंट अलर्ट बनाना
ध्यान दें, कि मैं अलर्ट ट्रिगर करने के लिए एक विशिष्ट त्रुटि संदेश का भी उपयोग कर सकता हूं। जैसा कि पहले उल्लेख किया गया है, सभी त्रुटि संदेश SQL सर्वर कैटलॉग दृश्य sys.messages में सूचीबद्ध हैं। चित्र 2 स्क्रीन पर, मैंने केवल घटना की स्थिति का चयन किया है - प्रतिक्रिया पृष्ठ ने मुझे यह चुनने की अनुमति दी है कि यदि यह घटना कैप्चर की जाती है तो क्या होगा। जैसा कि आप देख सकते हैं, मैं या तो नौकरी निष्पादित करके अपनी प्रतिक्रिया को स्वचालित करना चुन सकता हूं या बस ऑपरेटरों को सूचित कर सकता हूं। हम बाद में किसी कार्य के निष्पादन का पता लगाएंगे, लेकिन अभी के लिए, आइए देखें कि एक ऑपरेटर को वैकल्पिक विकल्प के साथ आगे बढ़ने की आवश्यकता क्यों है। हम उसी विंडो में एक ऑपरेटर बनाएंगे, लेकिन अगर हमारे पास मौजूदा ऑपरेटर होते, तो हम उन्हें सूची से आसानी से चुन सकते थे।
चित्र 3. प्रतिक्रिया का चयन करना
चित्र 4. ऑपरेटर को परिभाषित करना
चित्र 5. अलर्ट चैनल चुनना
चित्र 5 में, हम सूचनाएं भेजने के लिए ईमेल को माध्यम के रूप में चुनते हैं। आपको डेटाबेस मेल को सही ढंग से कॉन्फ़िगर करना चाहिए, अन्यथा जनरेट किए गए अलर्ट कतार में बने रहेंगे। नई चेतावनी विंडो के तीसरे पृष्ठ पर, हम चुन सकते हैं कि ईमेल अधिसूचना में त्रुटि संदेश शामिल है या नहीं और क्या हम एक अतिरिक्त संदेश भेजना चाहते हैं (उदाहरण के लिए, आगे की कार्रवाइयों के बारे में एक जूनियर डीबीए को निर्देश)। हम सक्रिय किए गए अलर्ट के बीच का अंतराल भी निर्धारित करते हैं। यह महत्वपूर्ण है क्योंकि यदि आप इसे डिफ़ॉल्ट (0) पर छोड़ देते हैं, तो ऑपरेटर का मेलबॉक्स थोड़े समय में अलर्ट से भर जाएगा।
चित्र .6। कॉन्फ़िगर करने के विकल्प
-- Listing 2: Creating a SQL Server Alert Using sp_add_alert USE [msdb] GO EXEC msdb.dbo.sp_add_alert @name=N'Alert_Insufficient_Resources_017', @message_id=0, @severity=17, @enabled=1, @delay_between_responses=900, @include_event_description_in=1, @job_id=N'00000000-0000-0000-0000-000000000000' GO EXEC msdb.dbo.sp_add_notification @alert_name=N'Alert_Insufficient_Resources_017', @operator_name=N'DatabaseAdmin', @notification_method = 1 GO
लिस्टिंग 2 इस अलर्ट को लागू करने के लिए समान कोड दिखाता है। एक बार जब हम ओके पर क्लिक करके प्रक्रिया पूरी कर लेते हैं, तो हम ऑब्जेक्ट एक्सप्लोरर में SQL सर्वर एजेंट नोड में अलर्ट और ऑपरेटर दोनों को देख पाएंगे।
चित्र 7. अलर्ट बनाया गया
SQL सर्वर प्रदर्शन स्थिति अलर्ट बनाना
हम वैकल्पिक मार्ग पर भी जा सकते हैं और एक प्रदर्शन स्थिति चेतावनी बना सकते हैं। एक उदाहरण के रूप में हम डेटाबेस> परसेंट लॉग यूज्ड काउंटर चुनते हैं। लॉग फ़ाइल उपयोग 75% से अधिक होने पर हम SQL सर्वर को एक ईवेंट उत्पन्न करने के लिए कहते हैं। इस मामले में, हम प्रतिक्रिया के रूप में 'कार्य निष्पादित करने के लिए' चुनते हैं। लिस्टिंग 3 इस नौकरी द्वारा किए जा रहे प्रमुख कार्यों को दिखाता है और लिस्टिंग 4 नौकरी की पूरी परिभाषा को दर्शाता है।
चित्र 8. प्रदर्शन स्थिति चेतावनी
-- Listing 3: SQL Server Error Messages BACKUP LOG [DB1] TO DISK = N'E:\MSSQL\Backup\DBTransactionLog.bak' WITH RETAINDAYS = 90, NOFORMAT, NOINIT, NAME = N'DB1-TransactionLog Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO USE [DB1] GO DBCC SHRINKFILE (N'DB1_log' , 0, TRUNCATEONLY) GO -- Listing 4: Complete Definition of SQL Agent Backup Job USE [msdb] GO /****** Object: Job [DB1_BackupTransactionLog] Script Date: 27/11/2019 7:20:22 PM ******/ BEGIN TRANSACTION DECLARE @ReturnCode INT SELECT @ReturnCode = 0 /****** Object: JobCategory [[Uncategorized (Local)]] Script Date: 27/11/2019 7:20:23 PM ******/ IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16) EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'DB1_BackupTransactionLog', @enabled=1, @notify_level_eventlog=0, @notify_level_email=3, @notify_level_netsend=0, @notify_level_page=0, @delete_level=0, @description=N'Backup the Transaction Log for DB1 when Transaction Log usage exceeds 75%', @category_name=N'[Uncategorized (Local)]', @owner_login_name=N'DESKTOP-CT8K40N\kenne', @notify_email_operator_name=N'DatabaseAdmin', @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback /****** Object: Step [Backup_Transaction_Log] Script Date: 27/11/2019 7:20:23 PM ******/ EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @[email protected], @step_name=N'Backup_Transaction_Log', @step_id=1, @cmdexec_success_code=0, @on_success_action=3, @on_success_step_id=0, @on_fail_action=2, @on_fail_step_id=0, @retry_attempts=2, @retry_interval=15, @os_run_priority=0, @subsystem=N'TSQL', @command=N'-- Listing 3: SQL Server Error Messages BACKUP LOG [DB1] TO DISK = N''E:\MSSQL\Backup\DBTransactionLog.bak'' WITH RETAINDAYS = 90, NOFORMAT, NOINIT, NAME = N''DB1-TransactionLog Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO', @database_name=N'master', @flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback /****** Object: Step [DB1_Shrink_Transaction_Log_File] Script Date: 27/11/2019 7:20:23 PM ******/ EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @[email protected], @step_name=N'DB1_Shrink_Transaction_Log_File', @step_id=2, @cmdexec_success_code=0, @on_success_action=1, @on_success_step_id=0, @on_fail_action=2, @on_fail_step_id=0, @retry_attempts=2, @retry_interval=15, @os_run_priority=0, @subsystem=N'TSQL', @command=N'USE [DB1] GO DBCC SHRINKFILE (N''DB1_log'' , 0, TRUNCATEONLY) GO', @database_name=N'master', @flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback COMMIT TRANSACTION GOTO EndSave QuitWithRollback: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave: GO
अंजीर। 9. निष्पादित के लिए नौकरी बनाएँ
चूंकि हमारी प्रतिक्रिया, इस मामले में, कार्य निष्पादन है, हम नौकरी में ही एक अधिसूचना भी शामिल करते हैं। एक बार जब हम नौकरी निर्माण के साथ कर लेते हैं, तो हम ऑब्जेक्ट एक्सप्लोरर में अलर्ट गुणों की समीक्षा कर सकते हैं। हम इतिहास पृष्ठ में देख सकते हैं कि घटना कितनी बार हुई है।
चित्र 10. अलर्ट के विकल्प
चित्र 11. चेतावनी इतिहास पृष्ठ
निष्कर्ष
इस लेख में, हमने अलर्ट और ऑपरेटरों के निर्माण की खोज की है। आप SQL सर्वर में इस शक्तिशाली क्षमता का लाभ उठा सकते हैं और तीसरे पक्ष के उपकरण को खरीदे बिना बुनियादी घटनाओं की निगरानी के लिए अपना वातावरण स्थापित कर सकते हैं। छोटी-मोटी समस्याओं को ठीक करने के लिए नौकरियों का उपयोग करने की संभावना हमें अपने SQL सर्वर वातावरण के सक्रिय प्रबंधन को प्राप्त करने में मदद करती है।