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.
- 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

- 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.
- 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

- 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