Bu makalede sql server’da alınan backup’ların en son alınmış backup tarihini gösteren script’i paylaşacağım.
SELECT
CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
msdb.dbo.backupset.database_name,
MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date
FROM
msdb.dbo.backupmediafamily
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id =
msdb.dbo.backupset.media_set_id
WHERE msdb..backupset.type = 'L'
GROUP BY
msdb.dbo.backupset.database_name
ORDER BY
msdb.dbo.backupset.database_name
msdb..backupset.type kısmında ‘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.
Aşağıdaki komut ile instance altındaki tüm databaselerin son backup’larını bulabiliriz.
use msdb
select database_name,[D] AS FullYedek,[I] AS DifferentialYedek,[L] AS LogYedek
from (select database_name,type,backup_start_date from backupset) b
PIVOT (MAX(backup_start_date) FOR type IN ([D],[I],[L])) AS PivotTable
ORDER BY database_name

Aşağıdaki komut RESTORING MODUNDA OLMAYAN MEVCUT ÇALIŞAN veritabanının üzerinde bulunan backup setlerini göstermektedir.
DECLARE @dbName sysname
SET @dbName = 'DBName'
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 komutta RESTORING modunda OLAN veritabanı üzerinde bulunan backup setlerini göstermektedir.
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..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 = 'DB_NAME'

Bu makalede sql server üzerinde alınmış veritabanlarının en son backuplarını gösteren script’i
paylaşmış olduk. Başka bir makalede görüşmek üzere..
“İnsan bir sıkıntıya uğradığı zaman yanı üzerine yatarken, otururken, ayakta iken devamlı bize yalvarır durur. Sıkıntısını giderdiğimiz zaman ise, kendisine dokunan o sıkıntı sebebiyle sanki bize hiç yalvarmamış gibi eski inkâr hâline döner gider. İşte ömür ve akıl sermayelerini boşa harcayıp haddi aşanlara yaptıkları şeyler böyle süslenip püslenmektedir.” Yunus-12