Freigeben über


Überwachen der Sicherungsaktivität für Azure SQL Managed Instance

Gilt für:Azure SQL Managed Instance

In diesem Artikel erfahren Sie, wie Sie die Sicherungsaktivität für Azure SQL Managed Instance überwachen, indem Sie entweder die msdb-Datenbank abfragen oder XEvent-Sitzungen (erweiterte Ereignisse) konfigurieren.

Übersicht

Azure SQL Managed Instance speichert Sicherungsinformationen in der msdb-Datenbank und gibt auch Ereignisse (auch als erweiterte Ereignisse oder XEvents bezeichnet) während der Sicherungsaktivität aus, die für die Berichterstellung verwendet werden kann. Konfigurieren Sie eine XEvent-Sitzung, um Informationen wie Sicherungsstatus, Sicherungstyp, Größe, Uhrzeit und Speicherort in der msdb-Datenbank nachzuverfolgen. Diese Informationen können in Sicherungsüberwachungssoftware integriert und auch für die Unternehmensüberwachung verwendet werden.

Unternehmensüberwachungen erfordern möglicherweise einen Nachweis für erfolgreiche Sicherungen, die Zeit der Sicherung und die Dauer der Sicherung.

Abfragen der msdb-Datenbank

Führen Sie die folgende Abfrage aus der benutzerdefinierten Datenbank aus, um die Sicherungsaktivität anzuzeigen:

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

Hinweis

Beim Abfragen von msdb-Systemtabellen, wie z. B. dbo.backupmediaset oder dbo.backupset, werden verschlüsselungsbezogene Felder angezeigt, die angeben, dass Sicherungsdateien nicht verschlüsselt sind. Dieser Status spiegelt nur verschlüsselung auf Modulebene wider. Alle automatischen Sicherungen werden im Ruhezustand verschlüsselt.

Konfigurieren einer XEvent-Sitzung

Verwenden Sie das erweiterte backup_restore_progress_trace-Ereignis, um den Status Ihrer SQL Managed Instance-Sicherung aufzuzeichnen. Ändern Sie die XEvent-Sitzungen nach Bedarf, um die Informationen nachzuverfolgen, die Sie für Ihr Unternehmen benötigen. Diese T-SQL-Codeausschnitte speichern die XEvent-Sitzungen im Ringpuffer, es ist aber auch möglich, in Azure Blob Storage zu schreiben. XEvent-Sitzungen, die Daten im Ringpuffer speichern, haben eine Beschränkung von ca. 1.000 Nachrichten, sodass sie nur zum Nachverfolgen der letzten Aktivitäten verwendet werden sollten. Darüber hinaus gehen Daten im Ringpuffer bei einem Failover verloren. Schreiben Sie daher für die Speicherung von Verlaufsdaten zu Sicherungen stattdessen in eine Ereignisdatei.

Grundlegende Nachverfolgung

Konfigurieren Sie eine grundlegende XEvent-Sitzung, um Ereignisse über vollständige vollständige Sicherungen zu erfassen. Dieses Skript sammelt den Namen der Datenbank, die Gesamtanzahl der verarbeiteten Bytes und die Uhrzeit, zu der die Sicherung abgeschlossen wurde.

Verwenden Sie Transact-SQL (T-SQL), um die grundlegende XEvent-Sitzung zu konfigurieren:

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;

Ausführliche Nachverfolgung

Konfigurieren Sie eine ausführliche XEvent-Sitzung, um mehr Details zur Sicherungsaktivität nachzuverfolgen. Dieses Skript erfasst Start und Ende von vollständigen, differenziellen und Protokollsicherungen. Da dieses Skript ausführlicher ist, füllt es den Ringpuffer schneller aus, sodass Einträge schneller wiederverwendet werden können als mit dem grundlegenden Skript.

Verwenden Sie T-SQL, um die ausführliche XEvent-Sitzung zu konfigurieren:

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;

Überwachen des Sicherungsstatus

Nachdem die XEvent-Sitzung erstellt wurde, können Sie T-SQL verwenden, um Die Ergebnisse des Ringpuffers abzufragen und den Fortschritt der Sicherung zu überwachen. Nachdem das XEvent gestartet wurde, werden alle Sicherungsereignisse gesammelt, sodass der Sitzung ungefähr alle 5 bis 10 Minuten Einträge hinzugefügt werden.

Grundlegende Nachverfolgung

Der folgende T-SQL-Code fragt die grundlegende XEvent-Sitzung ab und gibt den Namen der Datenbank, die Gesamtanzahl der verarbeiteten Bytes und den Zeitpunkt der Sicherung zurück:

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;

Der folgende Screenshot zeigt ein Beispiel für die Ausgabe der vorherigen Abfrage:

Screenshot der XEvent-Ausgabe.

In diesem Beispiel wurden fünf Datenbanken innerhalb von 2 Stunden und 30 Minuten automatisch gesichert, und die XEvent-Sitzung umfasst 130 Einträge.

Ausführliche Nachverfolgung

Der folgende T-SQL-Code fragt die ausführliche XEvent-Sitzung ab und gibt den Namen der Datenbank sowie den Start und das Ende von vollständigen, differenziellen und Protokollsicherungen zurück.

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;

Der folgende Screenshot zeigt ein Beispiel für eine vollständige Sicherung in der XEvent-Sitzung:

Screenshot der XEvent-Ausgabe mit vollständigen Sicherungen.

Der folgende Screenshot zeigt ein Beispiel für die Ausgabe einer differenziellen Sicherung in der XEvent-Sitzung:

Screenshot der XEvent-Ausgabe, die differenzielle Sicherungen zeigt.