sql server2005 自动备份数据库 删除一段时间以前的备份 步骤详细描述

Sql Server2005 自动备份数据库解决方案

一、    准备工作:

a)       . 启用 sql server 的代理服务 (Agent), 并把该项服务的启动类型修改成 自动 ’( 保证重启机器后自动备份计划可以执行 ), 具体操作方法为:

Step1 :打开服务管理程序 , 具体路径为: 开始 --> 设置 --> 控制面 --> 管理工具 --> 服务

Step2 :启动 SQL Server Agent” 服务 , 并设置为 自动启动 ”, 具体截图如下:

截图 1

b)      . 启用 sql server xp_cmdshell 功能 , 具体每一步骤的操作截图如下:

Step1 :打开 SQL Server 外围应用配置器

截图 2

Step2 :点击 功能的外围应用配置器

截图 3

Step3 :启用 xp_cmdshell

截图 4

二、    在数据库创建一项作业 :

a)       . 通过执行 自动备份数据库并删除一个月前的备份文件 .sql” 脚本 , sql server 中创建一项 作业 ”, 该作业可完成 CCCL_DB 数据库的自动备份及删除一个月前的备份文件的工作。里面有两处关于路径的地方和一处数据库名称的地方需要根据本地实际的情况填写 .

三、    作业的测试方法:

sql server ”SQL Server Management Studio” 中右键相应的作业 , 选择执行即可进行测试 , 操作截图如下:

截图 5

 sql文如下:

USE [msdb]
GO
/****** 对象:  Job [CCCL_BACKUP]    脚本日期: 04/28/2011 13:31:56 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** 对象:  JobCategory [[Uncategorized (Local)]]]    脚本日期: 04/28/2011 13:31:56 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'CCCL_BACKUP',
        @enabled=1,
        @notify_level_eventlog=2,
        @notify_level_email=0,
        @notify_level_netsend=0,
        @notify_level_page=0,
        @delete_level=0,
        @description=N'无描述。',
        @category_name=N'[Uncategorized (Local)]',
        @owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** 对象:  Step [备份及删除之前一个月的备份]    脚本日期: 04/28/2011 13:31:56 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'备份及删除之前一个月的备份',
        @step_id=1,
        @cmdexec_success_code=0,
        @on_success_action=1,
        @on_success_step_id=0,
        @on_fail_action=2,
        @on_fail_step_id=0,
        @retry_attempts=0,
        @retry_interval=0,
        @os_run_priority=0, @subsystem=N'TSQL',
        @command=N'declare   @data_30ago   nvarchar(50)
declare   @cmd   varchar(50)

set   @data_30ago   = ''E:/CCCL_DB_bak/''+convert(varchar(10),getdate()-30,112) 
set   @cmd   =   ''del   ''+   @data_30ago
exec   master..xp_cmdshell @cmd
go

declare   @data   nvarchar(50) 
set   @data= ''E:/CCCL_DB_bak/''+convert(varchar(10),getdate(),112) 
BACKUP   DATABASE   CCCL_DB   TO   DISK   =   @data
with   init',
        @database_name=N'CCCL_DB',
        @flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'每天凌晨2点备份数据',
        @enabled=1,
        @freq_type=4,
        @freq_interval=1,
        @freq_subday_type=1,
        @freq_subday_interval=0,
        @freq_relative_interval=0,
        @freq_recurrence_factor=0,
        @active_start_date=20110420,
        @active_end_date=99991231,
        @active_start_time=93500,
        @active_end_time=235959
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值