Delen via


Back-upactiviteit voor Azure SQL Managed Instance bewaken

Van toepassing op: Azure SQL Managed Instance

In dit artikel leert u hoe u back-upactiviteit kunt bewaken voor Azure SQL Managed Instance door een query uit te voeren op de msdb database of door XEvent-sessies (Extended Event) te configureren.

Overzicht

Azure SQL Managed Instance slaat back-upgegevens op in de msdb-database en verzendt ook gebeurtenissen (ook wel uitgebreide gebeurtenissen of XEvents genoemd) tijdens de uitvoering van de back-ups voor rapportagedoeleinden. Configureer een XEvent-sessie om informatie bij te houden, zoals de back-upstatus, het back-uptype, de grootte, de tijd en de locatie in de msdb database. Deze informatie kan worden geïntegreerd met back-upbewakingssoftware en ook worden gebruikt voor enterprise audit.

Ondernemingscontroles kunnen bewijs van geslaagde back-ups, tijd van back-up en duur van de back-up vereisen.

Query's uitvoeren op msdb-database

Als u de back-upactiviteit wilt bekijken, voert u de volgende query uit vanuit een door de gebruiker gedefinieerde database:

SELECT TOP (30) bs.machine_name, bs.server_name, DB_NAME(DB_ID(bs.database_name)) AS [Database Name], bs.recovery_model,
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), (CONVERT (FLOAT, bs.backup_size) /
CONVERT (FLOAT, bs.compressed_backup_size))) AS [Compression Ratio], bs.has_backup_checksums, bs.is_copy_only, bs.encryptor_type,
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_device_name AS [Backup Location], 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 DB_ID(bs.database_name) = DB_ID()
AND bs.[type] = 'D' 
ORDER BY bs.backup_finish_date DESC OPTION (RECOMPILE);

XEvent-sessie configureren

Gebruik de uitgebreide gebeurtenis backup_restore_progress_trace om de voortgang van uw back-up van sql Managed Instance vast te leggen. Pas de XEvent-sessies zo nodig aan om de informatie bij te houden waarin u geïnteresseerd bent voor uw bedrijf. Deze T-SQL-fragmenten slaan de XEvent-sessies op in de ringbuffer, maar het is ook mogelijk om naar Azure Blob Storage te schrijven. XEvent-sessies die gegevens opslaan in de ringbuffer hebben een limiet van ongeveer 1000 berichten, dus mogen alleen worden gebruikt om recente activiteiten bij te houden. Daarnaast gaan ringbuffergegevens verloren bij failover. Voor een historisch overzicht van back-ups schrijft u in plaats daarvan naar een gebeurtenisbestand.

Eenvoudig bijhouden

Configureer een eenvoudige XEvent-sessie om eenvoudige gebeurtenissen vast te leggen over volledige volledige back-ups. Dit script verzamelt de naam van de database, het totale aantal verwerkte bytes en het tijdstip waarop de back-up is voltooid.

Gebruik Transact-SQL (T-SQL) om de eenvoudige XEvent-sessie te configureren:

CREATE EVENT SESSION [Simple 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 [Simple backup trace] ON SERVER
STATE = start;

Uitgebreide tracering

Configureer een uitgebreide XEvent-sessie om meer informatie over uw back-upactiviteit bij te houden. Met dit script worden zowel volledige, differentiële als logboekback-ups vastgelegd. Omdat dit script uitgebreider is, wordt de ringbuffer sneller gevuld, zodat vermeldingen sneller kunnen worden gerecycled dan met het eenvoudige script.

Gebruik Transact-SQL (T-SQL) om de uitgebreide XEvent-sessie te configureren:

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;

Back-upvoortgang bewaken

Nadat de XEvent-sessie is gemaakt, kunt u Transact-SQL (T-SQL) gebruiken om query's uit te voeren op ringbufferresultaten en de voortgang van de back-up te controleren. Zodra de XEvent is gestart, worden alle back-upgebeurtenissen verzameld, zodat vermeldingen ongeveer elke 5-10 minuten aan de sessie worden toegevoegd.

Eenvoudig bijhouden

De volgende Transact-SQL-code (T-SQL) voert een query uit op de eenvoudige XEvent-sessie en retourneert de naam van de database, het totale aantal verwerkte bytes en het tijdstip waarop de back-up is voltooid:

WITH
a AS (SELECT xed = CAST(xet.target_data AS xml)
FROM sys.dm_xe_session_targets AS xet
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') d(n)
LEFT JOIN master.sys.databases db
ON db.physical_database_name = d.n.value('(data[@name="database_name"]/value)[1]', 'varchar(200)'))
SELECT * FROM b

In de volgende schermopname ziet u een voorbeeld van de uitvoer van de bovenstaande query:

Screenshot of the xEvent output

In dit voorbeeld zijn er gedurende 2 uur en 30 minuten automatisch een back-up gemaakt van vijf databases en zijn er 130 vermeldingen in de XEvent-sessie.

Uitgebreide tracering

De volgende Transact-SQL-code (T-SQL) voert een query uit op de uitgebreide XEvent-sessie en retourneert de naam van de database, evenals het begin en einde van zowel volledige, differentiële als logboekback-ups.

WITH
a AS (SELECT xed = CAST(xet.target_data AS xml)
FROM sys.dm_xe_session_targets AS xet
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') d(n)
LEFT JOIN master.sys.databases db
ON db.physical_database_name = d.n.value('(data[@name="database_name"]/value)[1]', 'varchar(200)'))
SELECT * FROM b

In de volgende schermopname ziet u een voorbeeld van een volledige back-up in de XEvent-sessie:

XEvent output showing full backups

In de volgende schermopname ziet u een voorbeeld van een uitvoer van een differentiële back-up in de XEvent-sessie:

XEvent output showing differential backups

Volgende stappen

Zodra uw back-up is voltooid, kunt u deze herstellen naar een bepaald tijdstip of een bewaarbeleid voor de lange termijn configureren.

Zie automatische back-ups voor meer informatie.