6 sql-server-2008 sql-server restore
我正在使用 SQL Server 2008。我想知道是否已从设备恢复了特定的数据库以及它何时发生。是否可以?
在msdb数据库中,有一个名为restorehistory的表:
declare @DB sysname = 'MyDB';
select * from msdb.dbo.restorehistory where destination_database_name = @DB;
Run Code Online (Sandbox Code Playgroud)
这是一个具有足够权限的人可以清除的表,但是如果恢复是最近的并且您没有清除该表的工作(或者如果它在那时和现在之间没有运行),您应该能够查看执行恢复的登录名。
编辑
您还可以将其加入其他几个表(如果它们有相关数据):backupset 和 backupmediafamily。如果那里有记录——与以前相同的保留警告——他们会告诉你更多关于用于恢复的备份文件的信息:
declare @DB sysname = 'MyDB';
select
rh.destination_database_name,
rh.user_name,
bs.name as backup_set_name,
bs.user_name as backup_set_username,
bs.backup_start_date,
bs.backup_finish_date,
bs.database_name as backup_set_database_name,
bs.server_name,
bs.machine_name,
bmf.physical_device_name,
bmf.device_type,
case bmf.device_type
when 2 then 'Disk'
when 5 then 'Tape'
when 7 then 'Virtual Device'
when 105 then 'Permanent backup device'
else 'UNKNOWN'
end as device_type_desc
from
msdb.dbo.restorehistory rh
left outer join msdb.dbo.backupset bs on rh.backup_set_id = bs.backup_set_id
left outer join msdb.dbo.backupmediafamily bmf on bs.media_set_id = bmf.media_set_id
where
rh.destination_database_name = @DB;
Run Code Online (Sandbox Code Playgroud)
这样,您还可以过滤设备类型或文件位置。
| 归档时间: |
|
| 查看次数: |
7178 次 |
| 最近记录: |