परिचय
SQL सर्वर में प्रत्येक बैकअप ऑपरेशन SQL सर्वर त्रुटि लॉग में लिखा जाता है। इसमें लेन-देन लॉग बैकअप शामिल हैं, तब भी जब वे लेन-देन लॉग शिपिंग कॉन्फ़िगरेशन के भाग के रूप में होते हैं। कभी-कभी पूरे लॉग बैकअप को लॉग करना SQL सर्वर त्रुटि लॉग में एक उपद्रव हो सकता है और इसे प्रबंधित करने की आवश्यकता होती है। ऐसे लॉगिंग को दबाने के लिए ट्रेस फ्लैग 3226 का उपयोग किया जाता है और हम इस लेख में प्रदर्शित करेंगे कि यह कैसे किया जा सकता है।
लेन-देन लॉग शिपिंग कॉन्फ़िगर करना
इस ट्रेस ध्वज के मूल्य को प्रदर्शित करने के लिए, हम Practice2017 नामक SQL सर्वर 2017 डेटाबेस का उपयोग करके एक छोटा लॉग शिपिंग कॉन्फ़िगरेशन लागू करेंगे। . हमारा प्राथमिक उदाहरण है EPG-KIGIRI\I2017 और हम इस डेटाबेस को SQL सर्वर 2019 इंस्टेंस EPG-KIGIRI\I2019 में कॉपी कर रहे हैं (चित्र 2 देखें)। संपूर्ण कॉन्फ़िगरेशन स्क्रिप्ट लिस्टिंग 1 में दिखाई गई है।
अंजीर। 1 प्राथमिक पर शिपिंग कॉन्फ़िगरेशन लॉग करें
[शीर्षक विस्तृत करें =”कोड "]
-- Listing 1: Transaction Log Shipping Configuration Script -- Execute the following statements on the primary to configure log shipping -- for database [EPG-KIGIRI\I2017].[Practice2017], -- The script is to be run on the primary in the context of the [msdb] database. ------------------------------------------------------------------------------------- -- Adding the log shipping configuration -- ****** Begin: Script to be run on the primary: [EPG-KIGIRI\I2017] ****** DECLARE @LS_BackupJobId AS uniqueidentifier DECLARE @LS_PrimaryId AS uniqueidentifier DECLARE @SP_Add_RetCode As int EXEC @SP_Add_RetCode = master.dbo.sp_add_log_shipping_primary_database @database = N'Practice2017' ,@backup_directory = N'G:\Backup\LogShip\' ,@backup_share = N'\\Epg-kigiri\g$\Backup\LogShip\' ,@backup_job_name = N'LSBackup_Practice2017' ,@backup_retention_period = 1440 ,@backup_compression = 2 ,@monitor_server = N'EPG-KIGIRI\I2017' ,@monitor_server_security_mode = 1 ,@backup_threshold = 60 ,@threshold_alert_enabled = 1 ,@history_retention_period = 2880 ,@backup_job_id = @LS_BackupJobId OUTPUT ,@primary_id = @LS_PrimaryId OUTPUT ,@overwrite = 1 IF (@@ERROR = 0 AND @SP_Add_RetCode = 0) BEGIN DECLARE @LS_BackUpScheduleUID As uniqueidentifier DECLARE @LS_BackUpScheduleID AS int EXEC msdb.dbo.sp_add_schedule @schedule_name =N'LSBackupSchedule_EPG-KIGIRI\I20171' ,@enabled = 1 ,@freq_type = 4 ,@freq_interval = 1 ,@freq_subday_type = 4 ,@freq_subday_interval = 5 ,@freq_recurrence_factor = 0 ,@active_start_date = 20190113 ,@active_end_date = 99991231 ,@active_start_time = 0 ,@active_end_time = 235900 ,@schedule_uid = @LS_BackUpScheduleUID OUTPUT ,@schedule_id = @LS_BackUpScheduleID OUTPUT EXEC msdb.dbo.sp_attach_schedule @job_id = @LS_BackupJobId ,@schedule_id = @LS_BackUpScheduleID EXEC msdb.dbo.sp_update_job @job_id = @LS_BackupJobId ,@enabled = 1 END EXEC master.dbo.sp_add_log_shipping_primary_secondary @primary_database = N'Practice2017' ,@secondary_server = N'EPG-KIGIRI\I2019' ,@secondary_database = N'Practice2017' ,@overwrite = 1 -- ****** End: Script to be run on the primary: [EPG-KIGIRI\I2017] ****** -- Execute the following statements on the secondary to configure log shipping -- for database [EPG-KIGIRI\I2019].[Practice2017], -- the script to be run on the secondary in the context of the [msdb] database. ------------------------------------------------------------------------------------- -- Adding the log shipping configuration -- ****** Begin: Script to be run on the secondary: [EPG-KIGIRI\I2019] ****** DECLARE @LS_Secondary__CopyJobId AS uniqueidentifier DECLARE @LS_Secondary__RestoreJobId AS uniqueidentifier DECLARE @LS_Secondary__SecondaryId AS uniqueidentifier DECLARE @LS_Add_RetCode As int EXEC @LS_Add_RetCode = master.dbo.sp_add_log_shipping_secondary_primary @primary_server = N'EPG-KIGIRI\I2017' ,@primary_database = N'Practice2017' ,@backup_source_directory = N'\\Epg-kigiri\g$\Backup\LogShip\' ,@backup_destination_directory = N'G:\Backup\LogShipCopy\' ,@copy_job_name = N'LSCopy_EPG-KIGIRI\I2017_Practice2017' ,@restore_job_name = N'LSRestore_EPG-KIGIRI\I2017_Practice2017' ,@file_retention_period = 1440 ,@monitor_server = N'EPG-KIGIRI\I2017' ,@monitor_server_security_mode = 1 ,@overwrite = 1 ,@copy_job_id = @LS_Secondary__CopyJobId OUTPUT ,@restore_job_id = @LS_Secondary__RestoreJobId OUTPUT ,@secondary_id = @LS_Secondary__SecondaryId OUTPUT IF (@@ERROR = 0 AND @LS_Add_RetCode = 0) BEGIN DECLARE @LS_SecondaryCopyJobScheduleUID As uniqueidentifier DECLARE @LS_SecondaryCopyJobScheduleID AS int EXEC msdb.dbo.sp_add_schedule @schedule_name =N'DefaultCopyJobSchedule' ,@enabled = 1 ,@freq_type = 4 ,@freq_interval = 1 ,@freq_subday_type = 4 ,@freq_subday_interval = 15 ,@freq_recurrence_factor = 0 ,@active_start_date = 20190114 ,@active_end_date = 99991231 ,@active_start_time = 0 ,@active_end_time = 235900 ,@schedule_uid = @LS_SecondaryCopyJobScheduleUID OUTPUT ,@schedule_id = @LS_SecondaryCopyJobScheduleID OUTPUT EXEC msdb.dbo.sp_attach_schedule @job_id = @LS_Secondary__CopyJobId ,@schedule_id = @LS_SecondaryCopyJobScheduleID DECLARE @LS_SecondaryRestoreJobScheduleUID As uniqueidentifier DECLARE @LS_SecondaryRestoreJobScheduleID AS int EXEC msdb.dbo.sp_add_schedule @schedule_name =N'DefaultRestoreJobSchedule' ,@enabled = 1 ,@freq_type = 4 ,@freq_interval = 1 ,@freq_subday_type = 4 ,@freq_subday_interval = 15 ,@freq_recurrence_factor = 0 ,@active_start_date = 20190114 ,@active_end_date = 99991231 ,@active_start_time = 0 ,@active_end_time = 235900 ,@schedule_uid = @LS_SecondaryRestoreJobScheduleUID OUTPUT ,@schedule_id = @LS_SecondaryRestoreJobScheduleID OUTPUT EXEC msdb.dbo.sp_attach_schedule @job_id = @LS_Secondary__RestoreJobId ,@schedule_id = @LS_SecondaryRestoreJobScheduleID END DECLARE @LS_Add_RetCode2 As int IF (@@ERROR = 0 AND @LS_Add_RetCode = 0) BEGIN EXEC @LS_Add_RetCode2 = master.dbo.sp_add_log_shipping_secondary_database @secondary_database = N'Practice2017' ,@primary_server = N'EPG-KIGIRI\I2017' ,@primary_database = N'Practice2017' ,@restore_delay = 0 ,@restore_mode = 0 ,@disconnect_users = 0 ,@restore_threshold = 45 ,@threshold_alert_enabled = 1 ,@history_retention_period = 2880 ,@overwrite = 1 END IF (@@error = 0 AND @LS_Add_RetCode = 0) BEGIN EXEC msdb.dbo.sp_update_job @job_id = @LS_Secondary__CopyJobId ,@enabled = 1 EXEC msdb.dbo.sp_update_job @job_id = @LS_Secondary__RestoreJobId ,@enabled = 1 END -- ****** End: Script to be run on the secondary: [EPG-KIGIRI\I2019] ******
[/विस्तार]
बैकअप, कॉपी और पुनर्स्थापना कार्य हर पांच मिनट में चलने के लिए निर्धारित हैं, और जब भी ऐसा होता है, डेटाबेस इंजन त्रुटि लॉग में एक प्रविष्टि भी लिखता है। इसे अनावश्यक माना जा सकता है, क्योंकि हम SQL एजेंट कार्य इतिहास का उपयोग करके लॉग बैकअप को आसानी से ट्रैक कर सकते हैं।
अंजीर। 2 SQL त्रुटि लॉग में शिपिंग बैकअप प्रविष्टियाँ लॉग करें
ट्रेस फ्लैग 3226 को सक्षम करना
आम तौर पर, हम या तो वर्तमान कनेक्शन के लिए या विश्व स्तर पर ट्रेस फ़्लैग सक्षम कर सकते हैं। हम SQL सर्वर स्टार्टअप पैरामीटर में ट्रेस फ़्लैग को सक्षम करने या ट्रेस फ़्लैग को लागू करने के लिए T-SQL का उपयोग कर सकते हैं। यह अनुशंसा की जाती है कि आप स्टार्टअप पैरामीटर दृष्टिकोण का उपयोग ट्रेस फ़्लैग को सक्षम करने के लिए करें जिसे आप इंस्टेंस पर लागू करना चाहते हैं। ट्रेस ध्वज 3226 SQL सर्वर स्टार्टअप पैरामीटर में लागू करने के लिए, निम्न चरणों का पालन करें:
- SQL सर्वर कॉन्फ़िगरेशन प्रबंधक को व्यवस्थापक के रूप में चलाएँ
अंजीर। 3 SQL सर्वर कॉन्फ़िगरेशन प्रबंधक को व्यवस्थापक के रूप में चलाएँ
- वांछित इंस्टेंस पर राइट-क्लिक करें और गुणों . पर क्लिक करें ।
अंजीर। 4 इंस्टेंस गुण खोलें
- स्टार्टअप पैरामीटर चुनें
अंजीर। 5 स्टार्टअप पैरामीटर
- लेबल वाले टेक्स्ट बॉक्स में स्टार्टअप पैरामीटर निर्दिष्ट करें , टाइप करें –T3226 और जोड़ें . क्लिक करें ।
अंजीर। 6 ट्रेस फ्लैग 3226 को स्टार्टअप पैरामीटर के रूप में जोड़ना
- एक बार -T3226 मौजूदा पैरामीटर्स . की सूची में जोड़ा गया है , ठीक क्लिक करें ।
-- Listing 2: Enable a Trace Flag -- Turn on a trace flag for the current connection DBCC TRACEON (3205); GO -- Turn on a trace flag globally DBCC TRACEON (3205, -1); GO
SQL सर्वर त्रुटि लॉग दिखाता है कि स्टार्टअप पर ट्रेस ध्वज सक्षम है। (चित्र 8 देखें)
अंजीर। SQL सर्वर त्रुटि लॉग में संकेतित 8 स्टार्टअप पैरामीटर
परिणाम देखना
एक बार जब यह पुष्टि हो जाती है कि ट्रेस फ्लैग काम कर रहा है, तो हमें पता चलता है कि SQL सर्वर त्रुटि लॉग अब लॉग शिपिंग (या किसी अन्य लॉग बैकअप) से जुड़े लॉग बैकअप को त्रुटि लॉग में नहीं लिखता है। चित्र 9 पर पूरा ध्यान दें, यह दर्शाता है कि बैकअप कार्य इतिहास में संग्रहीत सभी लॉग बैकअप त्रुटि लॉग में नहीं लिखे गए हैं। यह उस बिंदु के साथ संरेखित होता है जिस पर हमने ट्रेस फ़्लैग 3226 (लगभग 8:15 बजे) सक्षम किया था।
अंजीर। 9 SQL सर्वर त्रुटि लॉग में कोई लॉग बैकअप रिकॉर्ड नहीं किया गया
अगर हम सेकेंडरी इंस्टेंस EPG-KIGIRI\I2019, पर ट्रेस फ्लैग 3226 को भी सक्षम करते हैं हम पाते हैं कि लॉग रिस्टोर ऑपरेशंस भी अब एरर लॉग में नहीं लिखे गए हैं क्योंकि हमने सेकेंडरी इंस्टेंस पर लगभग 8:30 बजे ट्रेस फ्लैग 3226 को सक्षम किया था। (चित्र 10 देखें)
निष्कर्ष
इस लेख में, हमने दिखाया है कि हम प्राथमिक उदाहरण पर लेन-देन लॉग बैकअप के लॉगिंग को दबाने के लिए ट्रेस फ्लैग 3226 का उपयोग कैसे कर सकते हैं, और लेनदेन लॉग द्वितीयक उदाहरण पर लॉग शिपिंग सेटिंग्स को पुनर्स्थापित करता है। यह अनावश्यक लॉगिंग से बचने के लिए बहुत उपयोगी होगा जो त्रुटि लॉग में आने वाली वास्तविक समस्याओं को "छिपा" सकता है।
संदर्भ
DBCC ट्रेसऑन ट्रेस फ़्लैग्स