首页 > 技术文章 > SQL Server自动备份并定时清理备份文件

sgxw 2020-10-16 16:34 原文

       在我们现有的系统中数据库的重要性不言而喻,为了避免数据宕机或误操作造成的数据丢失情况的产生,定期对数据库进行备份是必须要做的工作,下面将介绍SQL Server自带的数据库备份方法,希望可以帮助大家解决日常备份的问题。

第一步:登录数据库—>管理—>维护计划—>维护计划向导

 第二步:输入维护计划“名称”及“说明”,点击“更改”按钮

 第三步:在“新建作业计划”界面进行相关的设置

          计划类型:重复执行;

          频率执行:每周、每天、每月(这里我选择每天进行备份)

          每天频率:时间自行选择;(这里我选择每天备份一次)

          持续时间:开始时间默认当前时间(这里建议改成凌晨或者数据开销相对较小的时间段),结束时间可以不填;

以上设置完成后点击“确定”

第四步:点击下一步,“选择维护任务”,这里我选择“备份数据库完整”及“清楚维护任务”,定期清除备份的数据,避免磁盘空间被备份数据占满,造成数据宕机。

 

 第五步:“选择维护任务顺序”,这里是先备份后删除

 第六步:选择要备份的数据库,可以根据需要备份的数据库进行选择,可以选择备份到哪个位置。,最好放在磁盘空间比较充足的盘符,扩展名默认bak就可以。

第七步:设置“定义清除维护任务”,选择备份时所设置的文件夹,文件扩展名bak,文件保留时间,根据自己的需求选择,备份保留时间

 

 第八步:选择报告选项的保存地址,自己根据需要选择。

第九步:点击“完成”设置,此处可以看到前面的设置情况。

 

第十步:设置成功

 

 第十一步:设置完成后,可以看到“维护计划”内和“作业”内会生成一个作业计划。

 第十二步:维护计划右键“修改”可查看计划任务,右键可以再次设置相关参数。

 第十三步:作业右键“作业开始步骤”可直接执行此作业,验证作业是否生效

常见问题:

1、SQL server 维护计划无法手动删除的解决办法

SQL server 因为需要定时备份数据库,一般情况下大家都会选择在管理的维护计划中创建维护计划,因各种原因创建的维护计划不合适或者不用需要删除时,有时候会提示无法删除,各种提示报错。

以下是无法手动删除时,通过sql语句删除的步骤。

复制一下内容到 SQLServer的 "新建查询"中---


--【1】删除【管理】中的维护计划
use msdb
go
select * from sysmaintplan_plans
Delete sysmaintplan_plans where Name='维护计划'

--【2】删除【SQLserver代理】中的作业

USE [msdb]
Declare @job_name varchar(100)
--SET @job_name = N'jobName'
SET @job_name=N'数据库备份.Subplan_1'
--注:jobName为维护计划对应的jobName
 
--删除在计划里面的日志
DELETE sysmaintplan_log
FROM sysmaintplan_subplans as subplans
INNER JOIN sysjobs_view as syjobs on subplans.job_id = syjobs.job_id
INNER JOIN sysmaintplan_log on subplans.subplan_id =sysmaintplan_log.subplan_id
WHERE (syjobs.name = @job_name)
 
--删除代理的作业
DELETE sysjobschedules
FROM sysjobs_view v
INNER JOIN sysjobschedules o on v.job_id=o.job_id
WHERE v.name=@job_name
 
--删除子计划
DELETE sysmaintplan_subplans
FROM sysmaintplan_subplans as subplans
INNER JOIN sysjobs_view as syjobs ON subplans.job_id = syjobs.job_id
WHERE (syjobs.name = @job_name)
--删除作业
DELETE FROM msdb.dbo.sysjobs_view WHERE name = @job_name

2、SQL server 无法确定所有者是否有服务器访问权限的解决方法

 错误提示:该作业失败。 无法确定所有者 WIN-3TH1KNIT12D\Administrator (拥有作业 Database_Backup.step1)是否有服务器访问权限 (原因: 无法获取有关 Windows NT 组/用户 'WIN-3TH1KNIT12D\Administrator' 的信息,错误代码 0x534。 [SQLSTATE 42000] (错误 15404)).

解决办法:

 

 将所有者更改为NT AUTHORITY\SYSTEM即可。

推荐阅读