Azure SQL Yönetilen Örneği için yedekleme etkinliğini izleme

Şunlar için geçerlidir: Azure SQL Yönetilen Örneği

Bu makalede, veritabanını sorgulayarak msdb veya genişletilmiş olay (XEvent) oturumlarını yapılandırarak Azure SQL Yönetilen Örneği için yedekleme etkinliğini izlemeyi öğreneceksiniz.

Genel bakış

Azure SQL Yönetilen Örneği yedekleme bilgilerini msdb veritabanında depolar ve aynı zamanda yedekleme etkinliği sırasında raporlama amacıyla olayları (Genişletilmiş Olaylar veya XEvents olarak da bilinir) gösterir. Yedekleme durumu, yedekleme türü, boyut, saat ve veritabanı içindeki msdb konum gibi bilgileri izlemek için bir XEvent oturumu yapılandırın. Bu bilgiler yedekleme izleme yazılımıyla tümleştirilebilir ve Kurumsal Denetim amacıyla da kullanılabilir.

Kurumsal Denetimler başarılı yedeklemelerin kanıtını, yedekleme süresini ve yedekleme süresini gerektirebilir.

Msdb veritabanını sorgulama

Yedekleme etkinliğini görüntülemek için kullanıcı tanımlı veritabanından aşağıdaki sorguyu çalıştırın:

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 oturumlarını yapılandırma

SQL Yönetilen Örneği yedeklemenizin ilerleme durumunu kaydetmek için genişletilmiş olayı backup_restore_progress_trace kullanın. İşletmeniz için ilgilendiğiniz bilgileri izlemek için XEvent oturumlarını gerektiği gibi değiştirin. Bu T-SQL kod parçacıkları, XEvent oturumlarını halka arabelleğinde depolar, ancak Azure Blob Depolama'a yazmak da mümkündür. Halka arabelleğinde veri depoluyor olan XEvent oturumlarının sınırı yaklaşık 1000 ileti olduğundan yalnızca son etkinlikleri izlemek için kullanılmalıdır. Ayrıca, yük devretme sırasında halka arabelleği verileri kaybolur. Bu nedenle, yedeklemelerin geçmiş kaydı için bunun yerine bir olay dosyasına yazın.

Basit izleme

Tam yedeklemelerle ilgili basit olayları yakalamak için basit bir XEvent oturumu yapılandırın. Bu betik veritabanının adını, işlenen toplam bayt sayısını ve yedeklemenin tamamlanma zamanını toplar.

Basit XEvent oturumunu yapılandırmak için Transact-SQL (T-SQL) kullanın:

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;

Ayrıntılı izleme

Yedekleme etkinliğinizle ilgili daha fazla ayrıntıyı izlemek için ayrıntılı bir XEvent oturumu yapılandırın. Bu betik hem tam, fark hem de günlük yedeklemelerinin başlangıç ve bitişini yakalar. Bu betik daha ayrıntılı olduğundan, halka arabelleği daha hızlı doldurur, bu nedenle girişler basit betikten daha hızlı geri dönüştürülebilir.

Ayrıntılı XEvent oturumunu yapılandırmak için Transact-SQL (T-SQL) kullanın:

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;

Yedekleme ilerleme durumunu izleme

XEvent oturumu oluşturulduktan sonra, kademe arabelleği sonuçlarını sorgulamak ve yedeklemenin ilerleme durumunu izlemek için Transact-SQL (T-SQL) kullanabilirsiniz. XEvent başladıktan sonra tüm yedekleme olaylarını toplar, böylece girişler yaklaşık olarak her 5-10 dakikada bir oturuma eklenir.

Basit izleme

Aşağıdaki Transact-SQL (T-SQL) kodu basit XEvent oturumunu sorgular ve veritabanının adını, işlenen toplam bayt sayısını ve yedeklemenin tamamlanma zamanını döndürür:

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

Aşağıdaki ekran görüntüsünde yukarıdaki sorgunun çıktısının bir örneği gösterilmektedir:

XEvent çıkışının ekran görüntüsü

Bu örnekte, beş veritabanı 2 saat 30 dakika boyunca otomatik olarak yedeklendi ve XEvent oturumunda 130 girdi var.

Ayrıntılı izleme

Aşağıdaki Transact-SQL (T-SQL) kodu ayrıntılı XEvent oturumunu sorgular ve veritabanının adını ve hem tam, fark hem de günlük yedeklemelerinin başlangıç ve bitişini döndürür.

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

Aşağıdaki ekran görüntüsünde XEvent oturumunda tam yedekleme örneği gösterilmektedir:

Tam yedeklemeleri gösteren XEvent çıkışı

Aşağıdaki ekran görüntüsünde, XEvent oturumunda değişiklik yedeği çıkışının bir örneği gösterilmektedir:

Değişiklik yedeklemelerini gösteren XEvent çıkışı

Sonraki adımlar

Yedeklemeniz tamamlandıktan sonra belirli bir noktaya geri yükleyebilir veya uzun süreli saklama ilkesi yapılandırabilirsiniz.

Daha fazla bilgi edinmek için bkz . otomatik yedeklemeler.