还原数据库快照的历史记录

时间:2017-01-27 20:31:53

标签: sql sql-server

所有

我的公司询问我是否可以提供我管理的数据库已恢复为数据库快照的次数的历史记录。有谁知道我通过TSQL做到这一点的方法?我尝试过多种方法但没有成功。任何帮助,将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

这应该为您提供有关数据库备份的信息...您可以调整WHERE子句以仅过滤您感兴趣的数据库,如果您在SELECT列表中使用GROUP BY并使用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

对于数据库SNAPSHOTS,它们只是作为SQL Server中的数据库存储,因此您可以像这样简单地检查sys.databases视图:

 SELECT * from sys.databases 
 WHERE source_database_id IS NOT NULL

只要你有一个体面和一致的命名约定,就应该很容易分辨这些快照的制作时间和地点。据我所知,你真的不知道什么时候恢复快照而没有自己跟踪它。但是你可以知道快照本身的制作时间。