我们最近切换到FULL
恢复模式,每个周末都进行完整备份,每天进行差异备份。
问题是,差异备份似乎并不总是有效。作业历史中记录的错误信息是
作为用户执行:用户名。... 9.00.3042.00(32 位)版权所有 (C) Microsoft Corp 1984-2005。版权所有。
开始时间:上午 11:20:12 进度:2013-01-25 11:20:13.90 来源:{450389BA-54C2-4892-9CD0-0126CA9B0ED8} 执行查询“DECLARE @Guid UNIQUEIDENTIFIER EXECUTE msdb..sp”。:100%完成结束进度错误:2013-01-25 11:20:14.40 代码:0xC002F210
来源:备份数据库(差异)执行 SQL 任务
描述:执行查询“BACKUP DATABASE [MyDatabase] TO DISK = N'E:\Database Backups \MyDatabase_backup_201301251120.diff' WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'MyDatabase_backup_20130125112014', SKIP, REWIND, NOUNLOAD, STATS = 10" 失败并出现以下错误:“无法为数据库“MyDatabase”执行差异备份,因为当前数据库备份不存在。通过重新发出 BACKUP DATABASE 来执行完整数据库备份,省略 WITH DIFFERENTIAL 选项。BA ... 包执行 fa... 步骤失败的。
完整备份作业每次都成功完成,我可以使用此处msdb.dbo.backupset
找到的查询查看它,所以我知道它存在。看起来在重新启动后,差异备份确实成功完成,直到下一次完整备份。
以下是我的工作经历:
1/16 - 完全备份 - 成功 1/17 - 差异备份 - 成功 1/18 - 差异备份 - 成功 1/19 - 差异备份 - 成功 1/20 - 完全备份 - 成功 1/21 - 差异备份 - 失败 1/21 - 差异备份 - 失败 1/22 - 完全备份 - 成功 1/22 - 差异备份 - 失败 1/22 - 重启 1/23 - 差异备份 - 成功 1/23 - 重新启动 1/24 - 差异备份 - 成功 1/25 - 完全备份 - 成功 1/25 - 差异备份 - 失败
重新启动是由于一个不相关的错误 where @@SERVERNAME
is null
,所以我推迟发布这个问题,直到我发现是否修复@@SERVERNAME
了问题,但它没有,现在我不知道从哪里开始。
什么会导致 SQL Server 无法识别数据库的完整备份,我该如何解决?
另外我不确定这是否相关,但差异备份似乎相当大,我想知道他们是否正在运行一开始(1/16)而不是最开始的完整数据库备份的差异最近的完整备份。完整备份约为 260GB,1/23-1/24 的差异分别为 30GB。
这些作业是使用 SQL Server 维护计划向导设置的,我使用的是 SQL Server 2005
维护计划的 [查看 T-SQL] 按钮返回以下代码:
完全备份:
BACKUP DATABASE [MyDatabase]
TO DISK = N'E:\Database Backups\MyDatabase_backup_2013_01_25_140607_2543780.bak'
WITH NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, STATS = 10,
NAME = N'MyDatabase_backup_2013_01_25_140607_2523778'
微分:
BACKUP DATABASE [MyDatabase]
TO DISK = N'E:\Database Backups\MyDatabase_backup_2013_01_25_140537_4073936.diff'
WITH DIFFERENTIAL, NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, STATS = 10,
NAME = N'MyDatabase_backup_2013_01_25_140537_4053934'
这与我的另一个问题 密切相关,但是在聊天中建议我发布一个新问题而不是编辑另一个问题,因为问题不同并且另一个问题的现有答案。
如果某些东西在幕后拍摄快照,破坏了 SQL 差异备份,导致需要在新的差异之前进行完整备份。您可以停止正在拍摄快照的任何内容,或者确保在尝试进行差异之前进行完整备份。如果您使用 Ola Hallengren 的维护解决方案,它可以在遇到这种情况时自动将差异更改为完整。