sql >> Database >  >> RDS >> Database

Trace Flag 3226 gebruiken om logboekregistratie van back-ups te onderdrukken

Inleiding

Elke back-upbewerking in SQL Server wordt naar het foutenlogboek van SQL Server geschreven. Dit omvat ook back-ups van transactielogboeken, zelfs wanneer ze plaatsvinden als onderdeel van een verzendconfiguratie van transactielogboeken. Soms kan het loggen van de volledige logboekback-up hinderlijk zijn in het SQL Server-foutlogboek en moet het worden beheerd. Trace Flag 3226 wordt gebruikt om dergelijke logging te onderdrukken en we zullen in dit artikel laten zien hoe dit kan worden gedaan.

Verzending van transactielogboek configureren

Om de waarde van deze traceringsvlag te demonstreren, zullen we een kleine verzendconfiguratie voor logbestanden implementeren met behulp van een SQL Server 2017-database met de naam Practice2017 . Onze primaire instantie is EPG-KIGIRI\I2017 en we repliceren deze database naar een SQL Server 2019-instantie EPG-KIGIRI\I2019 (Zie Afb. 2). Het volledige configuratiescript wordt getoond in Listing 1.

Afb. 1 Log verzendconfiguratie op primair

[titel uitbreiden =”Code "]

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

[/uitbreiden]

Back-up-, kopieer- en hersteltaken worden elke vijf minuten uitgevoerd en wanneer dit gebeurt, schrijft de database-engine ook een vermelding in het foutenlogboek. Dit kan als overbodig worden beschouwd, omdat we de logback-ups gemakkelijk kunnen volgen met behulp van de taakgeschiedenis van SQL Agent.

Afb. 2 Log back-upgegevens voor verzending in SQL-foutlogboek

Traceervlag 3226 inschakelen

Meestal kunnen we traceringsvlaggen inschakelen voor de huidige verbinding of wereldwijd. We kunnen T-SQL gebruiken om traceervlaggen in te schakelen of de traceringsvlag te implementeren in de opstartparameters van SQL Server. Het wordt aanbevolen dat u de benadering met opstartparameters gebruikt om traceervlaggen in te schakelen die u op het exemplaar wilt toepassen. Volg deze stappen om de traceringsvlag 3226 toe te passen in de opstartparameters van SQL Server:

  1. Voer SQL Server Configuration Manager uit als Beheerder

Afb. 3 Voer SQL Server Configuration Manager uit als beheerder

  1. Klik met de rechtermuisknop op de gewenste instantie en klik op Eigenschappen .

Afb. 4 Open instantie-eigenschappen

  1. Selecteer de Opstartparameters

Afb. 5 opstartparameters

  1. In het tekstvak met het label Geef een opstartparameter op , typ –T3226 en klik op Toevoegen .

Afb. 6 Traceringsvlag 3226 toevoegen als opstartparameter

  1. Eenmaal –T3226 is toegevoegd aan de lijst met Bestaande parameters , klik op 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

Het foutenlogboek van SQL Server geeft aan dat de traceringsvlag is ingeschakeld bij het opstarten. (Zie Afb. 8)

Afb. 8 opstartparameters aangegeven in het foutenlogboek van SQL Server

De resultaten bekijken

Zodra is bevestigd dat de traceringsvlag werkt, ontdekken we dat het foutenlogboek van SQL Server geen logboekback-ups meer schrijft die zijn gekoppeld aan logboekverzending (of een andere logboekback-up) naar het foutenlogboek. Let goed op Afb. 9 die laat zien dat alle logboekback-ups die zijn opgeslagen in de back-uptaakgeschiedenis niet naar het foutenlogboek worden geschreven. Dit komt overeen met het punt waarop we traceervlag 3226 hebben ingeschakeld (ongeveer 20:15 uur).

Afb. 9 Geen logboekback-ups opgenomen in SQL Server-foutlogboek

Als we traceringsvlag 3226 ook inschakelen op de secundaire instantie EPG-KIGIRI\I2019, we vinden dat de logboekherstelbewerkingen ook niet langer naar het foutenlogboek worden geschreven, omdat we traceringsvlag 3226 hebben ingeschakeld op het secundaire exemplaar om ongeveer 20:30 uur. (Zie Afb. 10)

Conclusie

In dit artikel hebben we laten zien hoe we traceringsvlag 3226 kunnen gebruiken om logboekregistratie van back-ups van transactielogboeken op het primaire exemplaar te onderdrukken, en het transactielogboek herstelt de verzendinstellingen van het logboek op het secundaire exemplaar. Dit is erg handig om onnodige logboekregistratie te voorkomen die echte problemen die in het foutenlogboek verschijnen, zou kunnen "verbergen".

Referenties

DBCC TraceOn-traceervlaggen


  1. Haal de vorige en volgende rij op uit rijen die zijn geselecteerd met (WHERE) voorwaarden

  2. Hoe kan ik met MySQL een kolom met de recordindex in een tabel genereren?

  3. Oracle Database Client stap voor stap installeren

  4. Hoe opmerkingen van een kolom te tonen met desc-bewerking