我们的备份程序如下:午夜完整备份、每 8 小时差异备份和每 5 分钟事务日志备份。维护计划使一切保持顺利和整洁。
要恢复到特定时间点(假设昨天下午 2:05)。使用 SQL Server Management Studio 2012 进行恢复时,我们右键单击要恢复到的数据库 > 任务 > 恢复 > 数据库。然后,我们恢复完整备份但不进行恢复(并覆盖现有数据)。这会使数据库处于“正在恢复...”状态。然后,我们转到 > 任务 > 恢复 > 文件和文件组。选择最近的差异备份(中午)。恢复但不进行恢复。
现在查看事务日志 - 任务 > 恢复 > 事务日志。在该对话框中,我们选择“来自文件或磁带”,然后单击按钮选择文件。添加并选择从 12:00PM 到 14:05PM 的 5 分钟事务日志(共 25 个)。当我们在对话框中单击“确定”时... SSMS 崩溃并出现以下错误:
执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)
加载到“C:...\backup_2012_12_22_120500_4174134.trn”的媒体被格式化为支持 1 个媒体系列,但根据备份设备规范,预计有 25 个媒体系列。RESTORE HEADERONLY 异常终止。(Microsoft SQL Server,错误:3231)
我记得这是我们在 SQL Server 2008 和 2005 中使用的确切过程,所以我不明白为什么会失败。这是 2012 特有的吗?这是一个错误吗?我在网上找不到任何相关信息。我们根本没有使用磁带备份,而且我读到的有关媒体系列的大部分内容都与磁带备份有关。
故障排除:按顺序选择每个事务日志(一次一个)并恢复工作。但是,由于事务日志太多,这很容易花费 15 分钟以上。
我还没有尝试过,但我认为如果我们以以下形式编写普通的旧 TSQL:
RESTORE DATABASE [OurDB] FILE = N'db_dat' FROM DISK = N'C:\...\diff\backup_2012_12_23_085000_4627006.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10
并针对每个 xaction 日志运行此操作 - 它应该可以工作。我可以编写一些 powershell 或其他东西来恢复数据库...但“Management Studio”不应该能够处理这个问题吗?这个答案似乎指向“否”。https://dba.stackexchange.com/questions/1021/how-to-restore-multiple-backups...然而 GUI 似乎暗示允许多次恢复“指定事务日志的来源和位置备份“——更不用说它首先允许您选择多个文件。
答案1
当您对备份进行条带化时,媒体系列中会包含多个文件。因此,如果您像这样调用备份:
backup log [OurDb] to file = 'c:\file1', file='c:\file2'
在我的示例中,备份将被分到两个文件(也就是说,一半备份将分到文件 1,另一半分到文件 2),并且这两个文件都需要恢复。要查看需要哪些文件,请查看 msdb 中的 backupmediafamily。以下查询应该可以帮您找到答案:
select family_sequence_number, physical_device_name
from backupmediafamily
where media_family_id = (
select media_family_id
from backupmediafamily
where physical_device_name = N'C:\...\diff\backup_2012_12_23_085000_4627006.bak'
)
然后,为了恢复,您必须对要恢复的每个媒体系列执行如下操作:
restore database [OurDb] from file = ''c:\file1', file='c:\file2', ... with norecovery
最后,当您想最终使数据库联机(即您已完成日志文件的恢复)时,您可以执行以下操作:
restore database [OurDb] with recovery
答案2
我找到了解决这个问题的方法
从管理工作室:
- 右键单击要恢复 trn 文件的数据库
- 选择任务
- 选择恢复
- 选择数据库...没错,就是这个
- 点击设备
- 点击椭圆
- 添加文件
- 浏览到事务日志文件的位置。确保它们在备份位置按日期时间排序,否则会失败,顺序混乱
- 选择第一个文件,按住键盘上的 Shift 键并选择最后一个文件。
- 单击“添加”
- 单击“确定”
- 选择目标数据库。您可能需要转到文件并更改还原为位置以反映目标 MDF 和 LDF 文件。
- 然后单击“确定”
祝你好运。