Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:Instância Gerenciada de SQL do Azure
Este artigo ensina como monitorar a atividade de backup da Instância Gerenciada de SQL do Azure consultando o banco de dados msdb
ou configurando sessões de XEvent (evento estendido).
Visão geral
A Instância Gerenciada de SQL do Azure armazena informações de backup no banco de dados msdb e também emite eventos (também conhecidos como Eventos Estendidos ou XEvents) durante a atividade de backup, que pode ser usada para relatórios. Configure uma sessão XEvent para acompanhar informações como status de backup, tipo de backup, tamanho, tempo e local no banco de dados msdb
. Essas informações podem ser integradas ao software de monitoramento de backup e também usadas para Auditoria Empresarial.
As Auditorias Empresariais podem exigir a prova de backups bem-sucedidos, o tempo de backup e a duração do backup.
Consultar o banco de dados msdb
Para exibir a atividade de backup, execute a seguinte consulta no banco de dados definido pelo usuário:
SELECT TOP (100)
DB_NAME(DB_ID(bs.database_name)) AS [Database Name],
CONVERT (BIGINT, bs.backup_size / 1048576) AS [Uncompressed Backup Size (MB)],
CONVERT (BIGINT, bs.compressed_backup_size / 1048576) AS [Compressed Backup Size (MB)],
CONVERT (NUMERIC (20, 2),
CASE
WHEN bs.compressed_backup_size > 0
THEN CONVERT (FLOAT, bs.backup_size) / CONVERT (FLOAT, bs.compressed_backup_size)
ELSE NULL
END
) AS [Compression Ratio],
bs.is_copy_only,
-- bs.user_name, -- Applicable only for user-initiated COPY ONLY backups.
bs.has_backup_checksums,
DATEDIFF(SECOND, bs.backup_start_date, bs.backup_finish_date) AS [Backup Elapsed Time (sec)],
bs.backup_finish_date AS [Backup Finish Date],
bmf.physical_block_size
FROM msdb.dbo.backupset AS bs WITH (NOLOCK)
INNER JOIN msdb.dbo.backupmediafamily AS bmf WITH (NOLOCK)
ON bs.media_set_id = bmf.media_set_id
WHERE bs.[type] = 'D'
-- AND bs.[is_copy_only] = 1 -- If you want to filter out for user initiated COPY ONLY backups.
ORDER BY bs.backup_finish_date DESC
OPTION (RECOMPILE); -- Optimize for ad hoc execution
Observação
Ao consultar msdb
tabelas do sistema como dbo.backupmediaset
ou dbo.backupset
, você vê campos relacionados à criptografia indicando que os arquivos de backup não são criptografados. Esse status reflete apenas a criptografia no nível do mecanismo. Todos os backups automáticos são criptografados em repouso.
Configurar a sessão XEvent
Use o evento estendido backup_restore_progress_trace
para registrar o progresso do back-up da Instância Gerenciada de SQL. Modifique as sessões XEvent conforme necessário para acompanhar as informações interessantes para sua empresa. Esses snippets T-SQL armazenam as sessões XEvent no buffer de anéis, mas também é possível gravar no Armazenamento de Blobs do Azure. As sessões XEvent que armazenam dados no buffer de anéis têm um limite de cerca de 1.000 mensagens, portanto, só devem ser usadas para acompanhar a atividade recente. Além disso, os dados do buffer de anéis são perdidos após o failover. Dessa forma, para um registro histórico de backups, grave em um arquivo de eventos.
Acompanhamento básico
Configure uma sessão básica do XEvent para capturar eventos sobre backups completos. Esse script coleta o nome do banco de dados, o número total de bytes processados e a hora em que o backup foi concluído.
Use Transact-SQL (T-SQL) para configurar a sessão básica do XEvent:
CREATE EVENT SESSION [Basic backup trace] ON SERVER
ADD EVENT sqlserver.backup_restore_progress_trace
(
WHERE operation_type = 0
AND trace_message LIKE '%100 percent%'
)
ADD TARGET package0.ring_buffer WITH (STARTUP_STATE = ON);
GO
ALTER EVENT SESSION [Basic backup trace] ON SERVER
STATE = start;
Acompanhamento detalhado
Configure uma sessão XEvent detalhada para acompanhar mais detalhes sobre a atividade de backup. Esse script captura o início e o fim dos backups completos, diferenciais e de log. Como esse script é mais detalhado, ele preenche o buffer de anel mais rapidamente, portanto, as entradas podem ser recicladas mais rapidamente do que com o script básico.
Use o T-SQL para configurar a sessão detalhada do XEvent:
CREATE EVENT SESSION [Verbose backup trace] ON SERVER
ADD EVENT sqlserver.backup_restore_progress_trace(
WHERE (
[operation_type]=(0) AND (
[trace_message] like '%100 percent%' OR
[trace_message] like '%BACKUP DATABASE%' OR [trace_message] like '%BACKUP LOG%'))
)
ADD TARGET package0.ring_buffer
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,
TRACK_CAUSALITY=OFF,STARTUP_STATE=ON)
ALTER EVENT SESSION [Verbose backup trace] ON SERVER
STATE = start;
Monitorar o progresso do backup
Depois que a sessão XEvent for criada, você poderá usar o T-SQL para consultar os resultados do buffer de anel e monitorar o progresso do backup. Depois que o XEvent é iniciado, ele coleta todos os eventos de backup para que as entradas sejam adicionadas à sessão aproximadamente a cada 5 a 10 minutos.
Acompanhamento básico
O código T-SQL a seguir consulta a sessão XEvent básica e retorna o nome do banco de dados, o número total de bytes processados e a hora em que o backup foi concluído:
WITH
a AS (SELECT CAST (xet.target_data AS XML) AS xed
FROM sys.dm_xe_session_targets AS xet
INNER JOIN sys.dm_xe_sessions AS xe
ON (xe.address = xet.event_session_address)
WHERE xe.name = 'Backup trace'),
b AS (SELECT d.n.value('(@timestamp)[1]', 'datetime2') AS [timestamp],
ISNULL(db.name, d.n.value('(data[@name="database_name"]/value)[1]', 'varchar(200)')) AS database_name,
d.n.value('(data[@name="trace_message"]/value)[1]', 'varchar(4000)') AS trace_message
FROM a
CROSS APPLY xed.nodes('/RingBufferTarget/event') AS d(n)
LEFT OUTER JOIN master.sys.databases AS db
ON db.physical_database_name = d.n.value('(data[@name="database_name"]/value)[1]', 'varchar(200)'))
SELECT * FROM b;
A captura de tela a seguir mostra um exemplo da saída da consulta anterior:
Neste exemplo, cinco bancos de dados tiveram o backup feito automaticamente ao longo de 2 horas e 30 minutos e há 130 entradas na sessão XEvent.
Acompanhamento detalhado
O código T-SQL a seguir consulta a sessão verbosa do XEvent e retorna o nome do banco de dados, bem como o início e o fim dos backups completos, diferenciais e de log.
WITH
a AS (SELECT CAST (xet.target_data AS XML) AS xed
FROM sys.dm_xe_session_targets AS xet
INNER JOIN sys.dm_xe_sessions AS xe
ON (xe.address = xet.event_session_address)
WHERE xe.name = 'Verbose backup trace'),
b AS (SELECT d.n.value('(@timestamp)[1]', 'datetime2') AS [timestamp],
ISNULL(db.name, d.n.value('(data[@name="database_name"]/value)[1]', 'varchar(200)')) AS database_name,
d.n.value('(data[@name="trace_message"]/value)[1]', 'varchar(4000)') AS trace_message
FROM a
CROSS APPLY xed.nodes('/RingBufferTarget/event') AS d(n)
LEFT OUTER JOIN master.sys.databases AS db
ON db.physical_database_name = d.n.value('(data[@name="database_name"]/value)[1]', 'varchar(200)'))
SELECT * FROM b;
A captura de tela a seguir mostra um exemplo de um backup completo na sessão XEvent:
A captura de tela a seguir mostra um exemplo de uma saída de um backup diferencial na sessão XEvent: