Sql 2005 建立作业自动备份的人工方法和程序代码!(经典)

    ------------------------- 转自来自:http://www.lottery66.com/sscnews/20120412.html

      在SQL Server 2005中我们可以使用维护计划来为数据库自动备份。其使用方法如下:

      1、启动【sql server Management Studio】

      2、在【对象资源管理器】窗口里选择【管理】——【维护计划】。

      3、右击【维护计划】,选择【维护计划向导】。

      4、弹出如图所示的【维护计划向导】对话框,单击【下一步】。

      5、【选择目标服务器】对话框,在【名称】文本框里可以输入维护计划的名称;在【说明】文本框里可以输入维护计划的说

      明文字;【在服务器】文本框里可以输入要使用的服务器名;最后选择正确的身份证信息,单击【下一步】。

      6、弹出如图所示【选择维护任务】对话框,在该对话框里可以选择多种维护任务:检查数据库完整性、收缩数据库、重新生成

      或组织索引、更新统计信息、清除历史记录、执行sql Server代理作业、备份数据库等。在本例中选择【备份数据库(完整)】复

      选框,其他维护任务的设置都大同小异 。

      7、单击【下一步】,弹出如图所示【选择维护任务顺序】对话框,如果有多个维护任务,在此可以通过【上移】和【下移】两个按钮来设置维护任务的顺序,设置完毕后单击【下一步】。

      8、弹出如图所示【定义任务】对话框,在【数据库】下 拉列表框里可以选择要备份的数据库名;在【备份组件】区域里可以

      选择备份数据库还是备份数据库文件;在【目标】区域可以添加备份文件和备份设备、设置是否将备份数据追加到备份文件里等,

      设置完毕后单击【下一步】 。

      9、弹出如图所示【选择计划属性】对话框,单击【更改】。

      10、弹出如图所示【新建作业计划】对话框,在该对话框里可以设置备份数据库的时间及频率,设置完毕后单击【确定】回到

      如下所示对话框,再单击【下一步】。

      11、弹出如图18.24所示【选择报告选项】对话框,在该对话框里可以选择如果管理维护计划报告:可以将其写入文件中,也可

      以通过电子邮件发送数据库管理员。设置完毕后单击【下一步】。

      12、弹出如图所示【完成向导】对话框,单击【完成】按钮完成维护计划创建操作。

      13、创建完维护计划后,请确认sql server代理是否启动:在【对象资源管理器】窗口里,右击【sql Server代理】,在弹出的快

      捷菜单里选择【启动】。

      如果在新建作业或维护报错,如下:===== 请安装sql server 2005 sp3补丁来解决!

      维护计划向导进度

      - 创建维护计划“TimeBackup” (错误)
      消息
      创建维护计划失败。

      ------------------------------
      其他信息:

      未能从程序集“Microsoft.SqlServer.Smo, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91”中加载类型“Microsoft.SqlServer.Management.Smo.Agent.JobBaseCollection”。 (Microsoft.SqlServer.MaintenancePlanTasks)


      - 将任务添加到维护计划 (已停止)

      - 添加计划选项 (已停止)

      - 添加报告选项 (已停止)

      - 保存维护计划“TimeBackup” (已停止)

      ------------------------------------- 经典代码 --------------------------------------------------

      -- 例子:@database_name=N'test', 换成你的数据库,此job每天早上1点执行
      IF  EXISTS (SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = N'备份测试')
      EXEC msdb.dbo.sp_delete_job @job_name=N'备份测试', @delete_unused_schedule=1
      go
      BEGIN TRANSACTION
      DECLARE @ReturnCode INT
      SELECT @ReturnCode = 0
      /****** 对象:  JobCategory [Database Engine Tuning Advisor]    脚本日期: 06/01/2012 10:39:32 ******/
      IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'Database Engine Tuning Advisor' AND category_class=1)
      BEGIN
      EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'Database Engine Tuning Advisor'
      IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
      
      END
      
      DECLARE @jobId BINARY(16)
      EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'备份测试', 
              @enabled=1, 
              @notify_level_eventlog=0, 
              @notify_level_email=0, 
              @notify_level_netsend=0, 
              @notify_level_page=0, 
              @delete_level=0, 
              @description=N'无描述。', 
              @category_name=N'Database Engine Tuning Advisor', 
              @owner_login_name=N'sa', @job_id = @jobId OUTPUT
      IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
      /****** 对象:  Step [备份数据]    脚本日期: 06/01/2012 10:39:33 ******/
      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'exec [test_backup]', 
              @database_name=N'test', 
              @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'早上1:00', 
              @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=20120601, 
              @active_end_date=99991231, 
              @active_start_time=0, 
              @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:
      go


你可能感兴趣的:(sql)