为了防止突发事故导致数据库存储的内容被修改或删除,在必要的时候可以进行直接通过备份恢复,我们可以通过Windows的定时任务来做备份,比如定时在每天的凌晨2:00备份一次。
本来SQL Server高级版本是有自动备份的功能的,但Express是没有的,这就需要借助系统的定时任务来做。
服务器系统:Windows Server,数据库SQL Server2008R2
- 在要备份的数据库中添加一个存储过程,如名为
sp_BackupDatabases
,备份的数据库名称为test
USE [test]
GO
/****** Object: StoredProcedure [dbo].[sp_BackupDatabases] Script Date: 03/31/2017 18:15:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_BackupDatabases]
AS
BEGIN
--设置备份数据库的存放目录
DECLARE @diskPath NVARCHAR(300)
SET @diskPath='C:\Backup\test_' --“test_”表示备份的文件名前缀,如“test_1122336655.bak”
+CONVERT(VARCHAR, GETDATE(),112)+'_'
+REPLACE(CONVERT(VARCHAR, GETDATE(),108),':','')+'.BAK'
BACKUP DATABASE test TO DISK = @diskPath WITH FORMAT;
END
- 在某个文件夹(建议直接在存备份文件的文件夹
C:\Backup\
)下新建一个文本文件,保存为test_backup.bat
,内容格式是:sqlcmd -S 数据库实例名 -E -Q "EXEC 数据库名.dbo.sp_BackupDatabases"
sqlcmd -S . -E -Q "EXEC test.dbo.sp_BackupDatabases"
保存后,可以直接双击该bat文件,查看是否在C:\Backup\
下生成备份文件,如果能生成备份文件证明脚本可以无错误,如果不能请检查有没写错语法或者文件夹是否存在。
- 打开“
服务器任务管理器
”->“配置
”->“任务计划程序
”,在任务计划程序库下新建一个文件夹,取名:myDuty
- 右键
myDuty
,点击“创建任务
”,在常规下填写相关的信息,注意要勾选最高权限,防止权限不够不能执行 - 新建一个触发器,自己选择任务的执行时间
- 在操作中选择前面保存的启动的脚本
test_backup.bat
7.其他的默认就行了,确定后会看到任务的状态为准备就绪,自动备份工作完成。这样你的这个脚本就会在你设定的时间执行。
这个备份会越来越多,需要增加一个脚本定时删除已过时的备份文件,请看定时删除数据库备份文件
(完)
「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」
(๑>ڡ<)☆谢谢老板~
使用微信扫描二维码完成支付
