- A+
注意:本站启用了缓存系统,如果你的账户登陆不了,那是因为缓存导致,刷新再登陆一次即可。如还不行,只需打开任意一篇文章,然后刷新登陆即可。声明:本站软件80%独家汉化,全网唯一,如果你发现他站有本站独家汉化软件,请举报。独家汉化软件可以转载,但严禁二发,违者一经发现永久封号。
2种方法使SQL Server定期自动备份、自动删除过期备份文件并修改 由 心语家园(https://www.xinyucn.cc/)独家或原创发布,你可通过右上角“私信本站”联系我们。
因为特殊原因,今天检查了一下服务器备份文件,结果发现,原来备份文件只保留了三天,而我需要7天的备份文件,所以重新梳理了一下备份方法。具体有2种方法可以实现,第一种使用管理的维护计划向导创建,第二种使用SQL SERVER作业创建,
第一种方式:
要求是每日凌晨2点进行自动备份,删除一个月之前的备份数据库。
这是使用sql server 代理服务的作业功能实现的,所以
前提条件:
1)需要启动SQL SERVER 代理服务
2)备份的数据库的恢复模式是:完整
选择备份数据库,右键【属性】,选择页-->选项--恢复模式,设置恢复模式为完整(如已经是完整模式,则不需要操作)
- 自动备份和删除数据库操作步骤
首先需要启动SQL Server Management Studio登录数据库
1、启动SQL SERVER 代理服务,选中SQL SERVER 代理,右键【启动】,开启服务
2、找到管理-->维护计划,选中维护计划,右键【维护计划向导】
2.1) 录入维护计划名称及说明
2.2) 设置维护计划的执行频率及时间点
2.3)选择下一步
2.4)选择执行任务类型,备份数据库(完整)和“清除维护”任务
2.5)选择执行任务顺序
2.6) 定义备份数据库(完整)--常规
2.7) 定义备份数据库(完整)--目标
2.8) 定义备份数据库(完整)--选项
2.9)定义“清除维护”任务
2.10)维护计划操作报告保存
2.11)维护计划配置查看,点击【完成】
2.12)维护计划执行
3、检查是否维护计划创建成功
3.1)管理-->维护计划,是否存在创建维护计划(备份CPAP数据库)
3.2) SQL Server代理--> 作业,是否存在维护计划的作业(备份CPAP数据库.Subplan_1)
4、检查是否有自动备份数据库
4.1)自动备份的数据库(这里我设置的3分钟执行一次,看具体业务情况)
4.2)自动备份的数据库报告(这里我设置的3分钟执行一次,看具体业务情况)
5、修改备份计划
维护计划右键“修改”可查看计划任务,右键可以再次设置相关参数。
5.1)在"维护计划"下我们新建的"自动备份数据库"上右键,再选择"修改",如下图所示:
5.2)在打开的新标签页中,可以修改备份行为、备份的时间、备份日志存放位置等,如下图所示:
第二种方式:
使用SQL Server Management Studio 创建数据库备份作业
SQL Server 作业无非就是按照规定的时间执行指定的脚本,这里介绍如何用SSMS(SQL Sever 2008)创建作业备份数据库。
- 假设在创建作业之前你所要备份的数据库已经存在;其次,你已经会启动SQL Sever 代理(一般是关闭的)开启代理服务,在服务里面修改启动类型改为自动。
在桌面找到计算机,右键点击【管理】,找到【服务和应用程序】,点击【服务】,找到Sql Server 代理(MSQLSERVER),点击右键,启动,如下图
启动后,SqlServer代理就可用了
(1)创建SQL Server代理作业
(1.1)新建作业,输出常规信息
如上图:输入作业名称(如:BackupJobTest),这里所有者和类别都是默认的,输入说明(就跟写代码要写注释一样,利人利己)
(1.2)设置作业执行步骤
点击左边“选择页”中的步骤属性选项卡,点击“新建”按钮
作业步骤属性窗口中,类型选择(T-SQL),选择要备份的数据库,并粘贴上调试好的SQL 备份脚本,由于我也是第一次写,贴一段示例在这里,读者可以自行参考修改:
--将SQL脚本赋值给变量
declare @SqlBackupDataBase as nvarchar(1000)
set @SqlBackupDataBase=N'BACKUP DATABASE YourDataBaseName TO DISK = ''E:\DBBackup\YourDataBaseName-'+
CONVERT(varchar(11),GETDATE(),112)+REPLACE(CONVERT(varchar(12),GETDATE(),108),':','')+'.bak'''
--备份文件格式:YourDataBaseName-20140626233410.bak
print @SqlBackupDataBase --打印出来(为了方便调试,可省略)
exec sp_executesql @SqlBackupDataBase --调用系统存储过程,执行SQL
注:CONVERT()函数的第三个参数是时间样式ID;用REPLACE()函数替换掉了时间中的冒号(因为Windows中文件名不能包含该字符)
部分要执行的命令(局域网):
execmaster..xp_cmdshell 'net use Y: \\计算机名称(ip地址)\共享文件夹 "计算机密码" /user:ip地址\计算机用户'
declare@sql varchar(500)
select@sql='\\计算机名称(ip地址)\共享文件夹\数据库备份名称.bak'
backupdatabase 数据库名称to disk=@sql
删除5天前的备份数据库
select@sql='del'+'\\192.168.0.22\BookDB\BooKDB'+convert(varchar(10),dateadd(day,-5,getdate()),112)+substring(convert(varchar(10),dateadd(day,-5,getdate()),108),1,2) +'.bak'
execmaster..xp_cmdshell @sql
-------------------------------完整示例------------------------------
局域网
execmaster..xp_cmdshell 'net use Y: \\192.168.0.22\BookDB "xn56.com"/user:192.168.0.22\administartor'
declare @sqlvarchar(500)
select@sql='\\192.168.0.22\BookDB\BookDB'+convert(varchar(10),getdate(),112) +substring(convert(varchar(10),getdate(),108),1,2) +'.bak'
backupdatabase BookDB to disk=@sql
select@sql='del'+'\\192.168.0.22\BookDB\BooKDB'+convert(varchar(10),dateadd(day,-5,getdate()),112)+substring(convert(varchar(10),dateadd(day,-5,getdate()),108),1,2) +'.bak'
execmaster..xp_cmdshell @sql
本地计算机
use master
go
declare @sql varchar(500)
select @sql='D:\data\backup\wms'+'_db_'+convert(varchar(10),getdate(),112) +'.bak'
backup database wms to disk=@sql with init
go
declare @sql varchar(500)
select @sql='del '+'D:\data\backup\wms'+'_db_'+convert(varchar(10),dateadd(day,-7,getdate()),112) +'.bak'
exec master..xp_cmdshell @sql
go
时间格式及ID对照表参考:W3school
(1.3)设置作业执行计划
在计划选项卡中,点击“新建”按钮新建计划:
设置完成后,点击”确定“按钮,另外三个属性“警报”、“通知”、“目标”如果需要可以自行设置,这里不再讲述。
完成计划设置后,点击上级的“确定”按钮,作业就创建完成了。
(2)手动验证作业执行的正确性
右键单击作业节点下刚建立的作业(图中的“BackupJobTest”),选择‘作业开始步骤(T)’
执行结果如下,表示成功:
点击“查看历史记录(V)”,可查看日志:
本站1元=100家园币,你可以通过签到获得家园币,用来免费捐赠。
最新默认解压密码:Hoejc!xinyucn.cc 其他密码请去公众号。
如果链接丢失或未加,私信本站获取,仅对本站VIP会员开放。
请注意:微信公众号谢绝私信留言,拒绝回复。本站已在多处醒目位置注明,但是仍有网友在微信私信留言,再次声明,微信公众号不引流,不回复。
- 官方微信公众号
- 扫一扫关注微信公众号,如果你觉得本站帮到了你,请通过下面的赏字按钮捐赠本站,谢谢!
- 本站官方头条号
- 扫一扫关注官方头条号,新老用户扫描下载抖音极速版,可领取最高269元现金,每天使用都可领钱。