【问题标题】:SQL restore locationSQL 恢复位置
【发布时间】:2017-12-29 03:04:50
【问题描述】:

我很想知道是否有一种方法可以确定用于在 MSSQL Server 安装上进行还原的文件的位置?我检查了 msdn 表,没有发现有关上次还原所用文件位置的详细信息。我还检查了 Microsoft SQL Server 子目录日志文件中的日志文件。有没有办法找到从数据库中加载此还原的位置?

【问题讨论】:

  • 信息在msdb中。试试SELECT * FROM msdb.dbo.restorehistory AS rh JOIN msdb.dbo.backupset AS bs ON bs.backup_set_id = rh.backup_set_id JOIN msdb.dbo.backupmediaset AS bms on bms.media_set_id = bs.media_set_id JOIN msdb.dbo.backupmediafamily AS bmf ON bmf.media_set_id = bms.media_set_id
  • 不幸的是,这显示的是备份位置,而不是恢复的位置。
  • 该位置是恢复数据库的备份文件的位置。

标签: sql sql-server database location restore


【解决方案1】:

这是脚本:

SELECT
  backupset.database_name,
  restorehistory.destination_database_name,
  restorehistory.restore_date,
  backupmediafamily.physical_device_name
FROM msdb.dbo.restorehistory restorehistory
  INNER JOIN msdb.dbo.backupset
    ON restorehistory.backup_set_id = backupset.backup_set_id
  INNER JOIN msdb.dbo.backupmediafamily
    ON backupset.media_set_id = backupmediafamily.media_set_id 
ORDER BY restorehistory.restore_date desc

这将为您提供以下信息:

  • 数据库名称 - 已备份的数据库
  • 目标数据库名称 - 备份还原到的数据库
  • 恢复日期
  • 物理设备名称 - 所用备份的文件路径

【讨论】:

  • 相同,仅显示备份存储或创建到的位置。我没有找到恢复的位置。
  • resourcehistory.destination_database_name 是备份恢复到的数据库。 backupset.database_name 是备份的源数据库。
  • @AmandaC 您可以将backupset.server_namebackupset.machine_name 添加到选择列表中,如果其中任何一个是您所说的“位置”。如果您指的是源数据库,那么正如 Dan 提到的那样,backupset.database_name
  • 我已经尝试了所有给出的方法,每次它都会向我显示备份的存储位置。我还将 bak 文件放在从其默认位置向上 2 级的目录中,并且它仍然注册与上次相同的位置,因此 msdb 表没有生成正确的信息。是否需要修改触发器以允许在上述查询的输出中生成请求的信息?
  • @AmandaC 备份历史记录显示它是从哪里恢复的,因此如果您在恢复后移动备份文件位置,历史记录仍将显示它在恢复时所在的位置恢复。如果您从其他文件位置恢复,则该其他位置的历史记录中将会有另一个条目。
猜你喜欢
  • 2011-10-28
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-30
  • 1970-01-01
相关资源
最近更新 更多