sql >> Databáze >  >> RDS >> Database

Použití příznaku trasování 3226 k potlačení protokolování zálohování protokolu

Úvod

Každá operace zálohování na serveru SQL je zapsána do protokolu chyb serveru SQL Server. To zahrnuje zálohy protokolu transakcí, i když k nim dojde jako součást konfigurace odesílání protokolu transakcí. Někdy může být protokolování celé zálohy protokolu obtíž v protokolu chyb serveru SQL Server a je třeba jej spravovat. Trace Flag 3226 se používá k potlačení takového protokolování a my si v tomto článku ukážeme, jak to lze provést.

Konfigurace odesílání protokolu transakcí

Abychom demonstrovali hodnotu tohoto příznaku trasování, implementujeme konfiguraci malého protokolu dopravy pomocí databáze SQL Server 2017 s názvem Practice2017 . Naší primární instancí je EPG-KIGIRI\I2017 a tuto databázi replikujeme do instance SQL Server 2019 EPG-KIGIRI\I2019 (Viz obr. 2). Celý konfigurační skript je uveden ve výpisu 1.

Obr. 1 Zaznamenejte konfiguraci zásilky na primární

[rozbalit název =”Kód “]

-- 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] ******

[/expand]

Úlohy zálohování, kopírování a obnovy jsou naplánovány na spuštění každých pět minut, a kdykoli k tomu dojde, databázový stroj také zapíše záznam do protokolu chyb. To může být považováno za nadbytečné, protože můžeme snadno sledovat zálohy protokolů pomocí historie úloh SQL Agent.

Obr. 2 Protokolujte položky zálohování expedice v protokolu chyb SQL

Povolení příznaku trasování 3226

Typicky můžeme povolit příznaky trasování buď pro aktuální připojení, nebo globálně. Můžeme použít T-SQL k povolení příznaků trasování nebo implementaci příznaku trasování do spouštěcích parametrů SQL Serveru. K povolení příznaků trasování, které chcete na instanci použít, se doporučuje použít přístup s parametry spuštění. Chcete-li použít příznak trasování 3226 v parametrech spuštění serveru SQL Server, postupujte takto:

  1. Spusťte SQL Server Configuration Manager jako Administrátor

Obr. 3 Spusťte SQL Server Configuration Manager jako správce

  1. Klikněte pravým tlačítkem na požadovanou instanci a klikněte na Vlastnosti .

Obr. 4 Otevřete Vlastnosti instance

  1. Vyberte Parametry spouštění

Obr. 5 Parametry spouštění

  1. V textovém poli označeném Zadejte parametr spuštění , zadejte –T3226 a klikněte na Přidat .

Obr. 6 Přidání příznaku trasování 3226 jako spouštěcího parametru

  1. Jednou –T3226 byl přidán do seznamu Stávajících parametrů , klikněte na OK .

-- 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

Protokol chyb serveru SQL Server ukazuje, že příznak trasování je povolen při spuštění. (Viz obr. 8)

Obr. 8 Parametry spouštění Uvedeno v protokolu chyb serveru SQL Server

Zobrazení výsledků

Jakmile se potvrdí, že příznak trasování funguje, zjistíme, že protokol chyb serveru SQL Server již nezapisuje zálohy protokolu spojené s odesláním protokolu (nebo jakoukoli jinou zálohu protokolu) do protokolu chyb. Věnujte pozornost obr. 9, který ukazuje, že všechny zálohy protokolů uložené v historii zálohovacích úloh se nezapisují do protokolu chyb. To odpovídá bodu, ve kterém jsme povolili příznak trasování 3226 (asi 20:15).

Obr. 9 V protokolu chyb serveru SQL Server nejsou zaznamenány žádné zálohy protokolů

Pokud také povolíme příznak trasování 3226 na sekundární instanci EPG-KIGIRI\I2019, zjistili jsme, že operace obnovení protokolu se již také nezapisují do protokolu chyb, protože jsme povolili příznak trasování 3226 na sekundární instanci přibližně ve 20:30. (Viz obr. 10)

Závěr

V tomto článku jsme demonstrovali, jak můžeme použít příznak trasování 3226 k potlačení protokolování záloh protokolu transakcí na primární instanci a protokol transakcí obnoví nastavení dopravy protokolu na sekundární instanci. To bude velmi užitečné, abyste se vyhnuli zbytečnému protokolování, které by mohlo „skrýt“ skutečné problémy vyskakující v protokolu chyb.

Odkazy

DBCC TraceOn Trace Flags


  1. Vyladění SQL Serveru – vše je o měření

  2. Jak mohu zapsat hodnoty SQLite Real do hodnot Java BigDecimal?

  3. Práce s událostmi v Oracle Cloud Infrastructure Část 1:Základy služeb

  4. Jak zobrazit nebo odkrýt panel nástrojů Rychlý přístup ve Wordu, Excelu a PowerPointu