SQLServer2005,维护计划的差异备份自动执行时老出错

558047 2010-05-28 08:43:56
维护计划我是通过SQLServer2005的图形界面来设置的
备份计划是这样设置的:
1.事务日志,每天7:20~17:20,每隔1小时运行一次。备份到D:\DBBackup\Mouldmng\Log
2.完整备份,每周日23:31运行,备份到D:\DBBackup\Mouldmng\Full
2.差异备份,每周一到周六的23:51运行,备份到D:\DBBackup\Mouldmng\Diff
现在是这种情况:
1.事务日志备份,没有任何问题
2.右键单击维护计划里面的完整备份的那个计划,选择执行,没有问题;马上之后,
右键单击维护计划里面的差异备份的那个计划,选择执行,也没有问题
3.查看头一天晚上差异备份运行时的错误日志,显示是这样的:
Executing the query "BACKUP DATABASE [Mouldmng] TO DISK = N'D:\\DBBackup\\Mouldmng\\Diff\\Mouldmng_backup_201005272311.bak' WITH DIFFERENTIAL ,

NOFORMAT, NOINIT, NAME = N'Mouldmng_backup_20100527231122', SKIP, REWIND, NOUNLOAD, STATS = 10
" failed with the following error: "无法执行数据库 "Mouldmng" 的差异备份,因为不存在当前数据库备份。请去掉 WITH DIFFERENTIAL 选项后重新发

出 BACKUP DATABASE 以执行数据库的完整备份。
BACKUP DATABASE 正在异常终止。".
Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

我不知道 NAME = N'Mouldmng_backup_20100527231122'这里面的这个文件到底是完整备份的文件还是
上一次的差异备份的文件,这个文件到底是来自哪里?是怎么生成的?
该如何解决我这个问题呢?
(我感觉,即使在周日,执行了一次完整备份之后,然后再下周一的23:51分时执行的差异备份,还是会出错)
...全文
441 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
558047 2010-06-07
  • 打赏
  • 举报
回复
为什么把计划执行的时间定在上午,则没有问题呢?
558047 2010-05-31
  • 打赏
  • 举报
回复
我查了一下上周六的日志,是这样的:
executing the query "BACKUP DATABASE [Mouldmng] TO DISK = N'D:\\DBBackup\\Mouldmng\\Diff\\Mouldmng_backup_201005292351.bak' WITH DIFFERENTIAL ,

NOFORMAT, NOINIT, NAME = N'Mouldmng_backup_20100529235115', SKIP, REWIND, NOUNLOAD, STATS = 10
" failed with the following error: "无法执行数据库 "Mouldmng" 的差异备份,因为不存在当前数据库备份。请去掉 WITH DIFFERENTIAL 选项后重新发

出 BACKUP DATABASE 以执行数据库的完整备份。
BACKUP DATABASE 正在异常终止。". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or

connection not established correctly.
558047 2010-05-31
  • 打赏
  • 举报
回复
上周六的差异备份自动执行照例没成功(差异备份我设为从周一到周六的23:51执行),
上周日的完全备份,我刚才查了一下,没有问题,备份文件已经存在了
558047 2010-05-28
  • 打赏
  • 举报
回复
人呢?
558047 2010-05-28
  • 打赏
  • 举报
回复
我不是白天的时候手动先进行了一个完全备份了么,我觉得之后每天晚上自动执行做的差异备份,
应该就以这个完全备份为基准来做差异啊,应该能找到它啊
obuntu 2010-05-28
  • 打赏
  • 举报
回复
这错误再明显不过了。
就是全备没了呀。。。
王向飞 2010-05-28
  • 打赏
  • 举报
回复
解决方法:先进行完全备份,然后再进行差异备份。
至于为什么你的完全备份没有了,我也不知道。。。
558047 2010-05-28
  • 打赏
  • 举报
回复
我进行了手动备份啊,但没有移走文件啊
永生天地 2010-05-28
  • 打赏
  • 举报
回复
似乎有人进行了手动备份,把文件拷走了
558047 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fredrickhu 的回复:]

SQL code
/*******************完整备份作业*******************/
--完整备份,每周一次
USE Master
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\FullBak'+replace(replace(replace(convert(varchar,getdate(),……
[/Quote]

我正在学习您的这段代码
能帮我分析一下,我的到底错在哪里了么?
--小F-- 2010-05-28
  • 打赏
  • 举报
回复
/*******************完整备份作业*******************/
--完整备份,每周一次
USE Master
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\FullBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.bak'
BACKUP DATABASE [demo] TO DISK=@str
WITH RETAINDAYS=15,NOFORMAT,NOINIT,
NAME=N'Demo完整备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO




/*******************差异备份作业*******************/
--截断日志
USE Master
GO
BACKUP LOG Demo WITH NO_LOG
GO
--收缩日志文件
USE Demo
GO
DBCC SHRINKFILE (N'Demo_log',0,TRUNCATEONLY)
GO
--差异备份,每天一次
USE Master
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\DiffBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.diff'
BACKUP DATABASE [Demo] TO DISK=@str
WITH DIFFERENTIAL,RETAINDAYS=8,NOFORMAT,NOINIT,
NAME=N'Demo差异备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO




/******************日志备份作业*******************/
--日志备份,每小时一次
USE Demo
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\logbak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.trn'
BACKUP LOG [Demo] TO DISK=@str
WITH RETAINDAYS=3,NOFORMAT,NOINIT,
NAME=N'Demo日志备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO




--删除过期的备份文件,每天两次
declare @str varchar(100),@dir varchar(100),@fileName varchar(30)
set @dir='del D:\DBtext\jgj\DBABak\'
set @filename=left(replace(replace(replace(convert(varchar,getdate()-15,20),'-',''),' ',''),':',''),8)
set @str=@dir+'fullbak'+@filename+'*.bak'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
set @str=@dir+'diffbak'+@filename+'*.diff'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
set @str=@dir+'logbak'+@filename+'*.trn'
exec xp_cmdshell @str
558047 2010-05-28
  • 打赏
  • 举报
回复
更正:Mouldmng_backup_201005272311应该为以下的:
Mouldmng_backup_201005272351.bak
Mouldmng_backup_20100527235122.bak
thinclient 2010-05-28
  • 打赏
  • 举报
回复
我也想知道为什么
永生天地 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 558047 的回复:]
难道完全备份和差异备份都要放在同一个文件夹么?
[/Quote]

我试了很久,只是有时移走了其中一个全部备份,进行差异备份才会出错,

我试了10多次,仅有2次有问题

还是没搞清楚原因
yjlhch 2010-05-28
  • 打赏
  • 举报
回复
学习了,谢谢
558047 2010-05-28
  • 打赏
  • 举报
回复
难道完全备份和差异备份都要放在同一个文件夹么?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧