¡Hola, chicos!
En este post me gustaría compartir contigo la solución a una pregunta que me enviaste hoy por Telegram, donde me preguntabas cómo ocultar los mensajes informativos que produce el comando BACKUP DATABASE durante su ejecución y que además los registra en el log de SQL Server.
Introducción
Si nunca has hecho una copia de seguridad en SQL Server (!!!), un ejemplo muy simple de uso del comando BACKUP DATABASE es este, donde uso el parámetro STATS = 10 para que cada 10% en el progreso del procesamiento de la copia de seguridad, se genere una salida para monitorear la ejecución:
BACKUP DATABASE dirceuresende
TO DISK = 'C:\Temporario\dirceuresende.bak'
WITH STATS = 10
Y analizando nuestro registro de SQL Server, podemos ver que se generaron 2 registros debido a esta copia de seguridad:

Si tiene varias bases de datos en su instancia, incluidas las copias de seguridad de registros que se generan con alta frecuencia, estos mensajes informativos pueden terminar consumiendo mucho espacio y dificultando la búsqueda de información cuando realmente ocurre un problema en su entorno.
Usando la bandera de seguimiento 3226
Para evitar este escenario, podemos usar traceflag 3226, que suprimirá estos mensajes informativos generados por el comando BACKUP DATABASE. En caso de que no lo sepa, los traceflags son parámetros que se utilizan para modificar temporalmente algún comportamiento estándar de la base de datos. Para obtener la lista completa de indicadores de seguimiento de SQL Server, visite documentación oficial de SQL Server Traceflags.
Su uso es muy sencillo:
-- Ativa a traceflag
DBCC TRACEON (3226, -1)
GO
-- Executa o backup
BACKUP DATABASE dirceuresende
TO DISK = 'C:\Temporario\dirceuresende.bak'
WITH STATS = 10
-- Se preferir, já pode rodar um backup de log também para testar
BACKUP LOG dirceuresende
TO DISK = 'C:\Temporario\dirceuresende_20180921_215600.ldf'
Después de ejecutar la copia de seguridad, analicemos nuevamente el registro de SQL Server:

Y como se muestra, ejecutamos la copia de seguridad y no se generó ningún mensaje informativo, ni siquiera el mensaje de registro. ¿Pero este traceflag también suprimirá los mensajes de error? ¡Vamos a probar!
Ejecutaré el siguiente comando, intentando hacer una copia de seguridad de una base de datos que no existe, para forzar un error:

Y ahora veamos si este error quedó registrado en el registro de SQL Server:

Ahí está nuestro mensaje de error. En otras palabras, los mensajes de advertencia se eliminaron del registro y se siguen registrando mensajes de error.
Habilitar y deshabilitar traceflags
Como vimos arriba, podemos activar traceflag 3226 usando el siguiente comando:
DBCC TRACEON (3226, -1)
GO
Una vez que ejecute este traceflag, estará habilitado hasta que se detenga el servicio SQL Server, es decir, no es necesario ejecutarlo cada vez que se realiza una copia de seguridad. Si se reinicia el servicio SQL, será necesario activar traceflag nuevamente.
Si desea detener traceflag 3226 y volver al comportamiento predeterminado, sin tener que reiniciar el servicio SQL Server, simplemente ejecute el siguiente comando:
DBCC TRACEOFF (3226, -1)
GO
¿Qué sucede si desea que este indicador de seguimiento se active automáticamente cada vez que se inicia el servicio SQL Server? En este caso, simplemente cambie el parámetro de inicio del servicio SQL Server accediendo al Administrador de configuración de SQL Server:

Y ahora agregamos el parámetro -T 3226 en la pestaña “Parámetros de inicio”:

Si desea agregar más de un traceflag al iniciar SQL Server, simplemente agréguelos por separado:

Bueno chicos, espero que hayáis disfrutado de este artículo y que os termine siendo útil.
Un fuerte abrazo y nos vemos en el próximo post.


Comentários (0)
Carregando comentários…