您的位置:首页 > 数据库

用作业和存储过程自动备份数据库并删除自动删除一周前的备份

2011-11-06 17:50 281 查看
第一步:新建存储过程gsgl

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[gsgl] AS --sdgsDbBackUp存储过程名称

declare
@filename nvarchar(100),--文件名
@NowDay int --设置时间

set @filename='F:\Data\sdgs_DB'+ convert ( nvarchar(11) ,getdate() , 112 ) +'.bak' --文件路径及文件名

print @filename BACKUP DATABASE [sdgs] TO DISK = @filename WITH INIT , NOUNLOAD , NAME = N'sdgs数据备份', NOSKIP , STATS = 10, NOFORMAT
--启用xp_cmdshell
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
--删除一周前的备份
declare @cmd varchar(40)
set @cmd='del F:\Data\sdgs_DB'+ convert ( nvarchar(11) ,getdate()-7 , 112 ) +'.bak'
exec xp_cmdshell @cmd

第二步新建存储过程sdgs_BackUp
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

CREATE PROCEDURE [dbo].[sdgs_BackUp] AS

DECLARE @jobid uniqueidentifier, @jobname sysname
SET @jobname = N'sdgs_BackUp'

IF EXISTS(SELECT * FROM msdb.dbo.sysjobs WHERE name=@jobname)
EXEC msdb.dbo.sp_delete_job @job_name=@jobname

EXEC msdb.dbo.sp_add_job
@job_name = @jobname,
@job_id = @jobid OUTPUT

--定义作业步骤
DECLARE @sql nvarchar(4000),@dbname sysname
SELECT @dbname=DB_NAME(), --作业步骤在当前数据库中执行

--执行存储过程gsgl

@sql=N'exec (''gsgl'') '
--一般定义的是使用TSQL处理的作业,这里定义要执行的Transact-SQL语句
EXEC msdb.dbo.sp_add_jobstep
@job_id = @jobid,
@step_name = N'sdgs_BackUp',
@subsystem = 'TSQL', --步骤的类型,一般为TSQL
@database_name=@dbname,
@command = @sql

--创建调度(使用后面专门定义的几种作业调度模板)
EXEC msdb..sp_add_jobschedule
@job_id = @jobid,
@name = N'dd', --作业计划属性,名称
@freq_type=4, --频率,执行 每天
@freq_interval=1, --频率,执行间隔 1天。即:指定每一天发生一次.
@freq_subday_type=0x4, --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次
@freq_subday_interval=6, --重复周期数,这里6分钟执行一次
@active_start_date = NULL, --作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD
@active_end_date = 99991231, --作业执行的停止日期,默认为99991231,格式为YYYYMMDD
@active_start_time = 00000, --作业执行的开始时间,格式为HHMMSS
@active_end_time = 235959 --作业执行的停止时间,格式为HHMMSS
EXEC msdb.dbo.sp_add_jobserver
@job_name = 'sdgs_BackUp' ,
@server_name = N'(local)'

第三步,在前台页面代码中执行存储过程:[sdgs_BackUp] ,自动创建作业!!作业的机制使软件自动进行数据库备份

转自:http://hi.baidu.com/%BC%D2%C0%EF%B5%C4%B3%A4%BD%AD%CB%AE/blog/item/06b21f6122aa464eeaf8f858.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: