MSSQL Server Backup ve Restore Kontrol Komutları

Bazen sql server da backupların hangi path’e alındığını bulmak isteriz. Bunun için aşağıdaki komutları kullanıp backup path’lerin yolunu bulabiliriz.

  1. Bu komut son 1 gün içerisindeki alınan tüm instance altındaki veritabanlarının backuplarını göstermektedir. İstediğimiz gün aralığını belirterek işlemlerimizi kolay bir şekilde yapabiliriz. Kodun en alt satırında yorum satırı olarak alınmış kısımda ilgili veritabanının tüm  backup pathlerini bulabiliriz. 
SELECT  TOP 150
    database_name, 
    backup_finish_date, 
backup_size,
    CASE msdb..backupset.type 
        WHEN 'D' THEN 'Database' 
       WHEN 'L' THEN 'Log' 
       WHEN 'I' THEN 'DIFF'
    END AS backup_type, 
    physical_device_name, 
 device_type 
FROM msdb.dbo.backupmediafamily 
INNER JOIN msdb.dbo.backupset 
    ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
WHERE (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE()-1) 
--AND database_name= 'database_name'  ORDER BY backup_finish_date desc
  1. Aşağıdaki komut ile belirtilen bir veritabanının backup yolunu ve bazı özellikleri bulabiliriz. ‘D’ ifadesi full backup alındığını, ‘I’ differantial backup alındığını,’L’ log backup alındığını,’F’ File veya Filegroup Backup,’P’ Partial Backup,’G’ Differential File Backup,’Q’ Differential partial Backup olduğunu göstermektedir. Backupların LSN değerinide gözlemleyebiliriz.
Use master
select bs.server_name,Bs.user_name,bs.database_name,
bs.recovery_model,
bs.compatibility_level,
bs.database_creation_date, 
FAM.physical_device_name,
bs.first_lsn,bs.last_lsn,
bs.backup_start_date,
bs.backup_finish_date,
bs.compressed_backup_size
from msdb.dbo.backupset BS
inner join msdb.dbo.backupmediafamily FAM ON FAM.media_set_id=BS.media_set_id
where database_name='FILEGROUP' and type='L' and is_copy_only=1 —copy only yorum satırı yapılabilir.
order by backup_finish_date desc

Scriptte’ki “is_copy_only=1” koşulu da backup’ın copy_only olarak alındığını belirtiyor. 

  1. Aşağıdaki komutu yazarsak ilgili veritabanında backup kontrolü yapmış oluruz.
DECLARE @dbName sysname
SET @dbName = 'FILEGROUP' –Veritabanı İsmi
SELECT
m.physical_device_name,
CAST(CAST(s.backup_size / 1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' ASbkSize,
CAST(DATEDIFF(second, s.backup_start_date,
s.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' TimeTaken,
s.backup_finish_date,
CAST(s.first_lsn AS VARCHAR(50)) AS first_lsn,
CAST(s.last_lsn AS VARCHAR(50)) AS last_lsn,
CASE s.[type] WHEN 'D' THEN 'Full'
WHEN 'I' THEN 'Differential'
WHEN 'L' THEN 'Transaction Log'
END AS BackupType,
s.server_name,
s.recovery_model
FROM msdb.dbo.backupset s
INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
WHERE s.database_name = @dbName -- Remove this line for all the database
ORDER BY backup_finish_date asc
  1. Aşağıdaki komut veritabanında restore kontrol işleminde kullanılmaktadır. Resimde dikkat etmişseniz Restoring modda olan veritabanının üzerine hangi backuplar yüklenmişse bunun LSN değerlerini vermektedir. Çok işimize yarayan bir komut olarak karşımıza çıkmaktadır.
SELECT TOP (1000)
b.database_name,
CASE type WHEN 'D' THEN 'FULL'
WHEN 'I' THEN 'DIFF'
WHEN 'L' THEN 'TRAN'
END as Backuptype,
f.physical_device_name,
first_lsn,
last_lsn,
database_backup_lsn,
checkpoint_lsn,
backup_start_date,  
backup_finish_date
FROM [msdb].[dbo].[restorehistory] r
inner join msdb.dbo.backupset b on r.backup_set_id=b.backup_set_id
left join msdb..backupmediafamily f on b.media_set_id=f.media_set_id where destination_database_name = 'Dbname'

Bu makalede sql server backup ve restore kontrol komutlarını görmüş olduk. Başka bir makalede görüşmek dileğiyle.

“Onlar her türlü boş söz ve faydasız işlerden yüz çevirirler.” Mü’minûn- 3

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir