/*******************完整備份作業*******************/
--完整備份,每週一次
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
SQLServer2005利用維護計劃自動備份數據庫
PS:1、SQL Server Management Studio Express數據庫管理系統並沒有維護計劃,要在開發版或企業版纔有。
2、需要在SQL Server Configuration Manager中,開啓服務SQL Server Agent(實例名)。如果服務啓動,在Management Studio中新建維護計劃時,提示以下錯誤信息: