2017-01-27 96 views
1

全部,恢復數據庫快照的歷史記錄

我的業務詢問我是否可以提供我管理的數據庫已恢復爲數據庫快照的次數的歷史記錄。有誰知道我通過TSQL做到這一點的方法嗎?我嘗試了一些沒有成功的方法。任何幫助,將不勝感激。謝謝。

回答

0

這應該會提供有關數據庫備份的信息......您可以調整WHERE子句以僅篩選您感興趣的數據庫,如果您使用GROUP BY並在SELECT列表中使用COUNT,則可以恢復的個性化......否則,這會提供一個比較完整的歷史:

SELECT [rs].[destination_database_name], 
     [rs].[restore_date], 
     [bs].[backup_start_date], 
     [bs].[backup_finish_date], 
     [bs].[database_name] as [source_database_name], 
     [bmf].[physical_device_name] as [backup_file_used_for_restore] 
    FROM msdb..restorehistory rs 
     INNER JOIN msdb..backupset bs ON [rs].[backup_set_id] = [bs].[backup_set_id] 
     INNER JOIN msdb..backupmediafamily bmf ON [bs].[media_set_id] = [bmf].[media_set_id] 
ORDER BY [rs].[restore_date] DESC 

對於數據庫快照,這些只是存儲在SQL Server中的數據庫,所以你可以簡單地檢查sys.databases中查看像這樣:

SELECT * from sys.databases 
WHERE source_database_id IS NOT NULL 

只要你h一個體面和一致的命名約定,應該很容易地分辨出這些快照的製作時間和位置。據我所知,你不能真正知道什麼時候恢復到快照而沒有自己跟蹤它。但是你可以知道快照是在什麼時候製作的。

+1

貸:https://www.mssqltips.com/sqlservertip/1860/identify-when-a-sql-server-database-was-restored-the-source-and-backup-date/ –

+0

這將給我是一個恢復數據庫歷史記錄,但不幸的是我沒有恢復到數據庫快照。我的猜測是,我得到它的唯一方法是使用XE捕捉語句,然後將其轉儲到表中並查詢它,但我想知道是否有更簡單的方法。 – PMooney

+0

對我來說,「恢復到數據庫快照」意味着「恢復以前備份的數據庫版本」......我想你的意思是不同於此。我通過備份數據庫來快照數據庫,並通過恢復來還原它們。所以這個查詢給我所有我需要的信息。 – pmbAustin