SQL Server使用脚本实现自动备份

因服务器安装的SQL Server版本不支持自动定时备份,需自行实现,大概思路为:sql

  1. 建立备份数据库的脚本
  2. 建立批处理脚本执行步骤一中的脚本
  3. 建立Windows定时任务执行步骤二中的脚本

1. 建立SQL脚本

新建db_backup.sql文件,填入如下内容。数据库

-- 定义须要备份的数据库
DECLARE @backupDatabase VARCHAR(20) = 'DB_NAME'

-- 定义数据库备份文件存放的基础路径
DECLARE @backupBasePath VARCHAR(MAX) = 'D:/DB_NAME/'

-- 定义备份文件名,文件名格式:<db>_backup_<yyyymmdd>_<hh:mm:ss.sss>.bak
DECLARE @backupFileName VARCHAR(50) = NULL

-- 获取当前时间戳
DECLARE @backupTime DATETIME = CURRENT_TIMESTAMP

-- 处理备份文件名称
SET @backupFileName = @backupDatabase + '_backup_' + CONVERT(VARCHAR(25), @backupTime, 112) + '_' + REPLACE(CONVERT(VARCHAR(25), CURRENT_TIMESTAMP, 114), ':', '') + '.bak'

-- 处理完整的备份文件路径
SET @backupBasePath = @backupBasePath + @backupFileName

-- 执行备份
BACKUP DATABASE @backupDatabase TO DISK = @backupBasePath

脚本内容比较简单,这里就不展开说了。详情可查看:BACKUP (Transact-SQL)安全

到这里已经能够使用脚本对数据库进行备份,但仍需手动执行脚本,没法实现自动定时备份的需求。服务器

2. 建立批处理脚本

新建db_backup.bat文件,填入如下内容。ide

sqlcmd -S localhost -U sa -P 123 -i ./db_backup.sql -o ./db_backup.log	

如下为使用到的各个选项的解释:工具

sqlcmd -S <数据库链接地址> -U <数据库登陆名> -P <数据库密码> -i <要执行的脚本文件> -o <执行日志文件>

更多选项请执行sqlcmd -?查看或者查看:sqlcmd 实用工具测试

双击执行批处理文件,若是没有报错且正常输出日志文件,则说明批处理脚本建立成功。url

3. 建立Windows任务计划

使用win+r快捷键打开运行对话框,输入taskschd.msc打开任务计划程序对话框,点击建立任务,依次进行如下步骤:操作系统

  1. 输入任务名称
  2. 若是是服务器环境,安全选项中务必选择无论用户是否登陆都要运行
  3. 新建触发器
  4. 设置触发器为按预约计划执行一次
  5. 在触发器高级设置中选择重复任务间隔根据须要设置,持续时间设置为无限期。这样配置的结果就是在触发后,无限期地每隔xx时间段重复一次
  6. 新建操做
  7. 选择刚才新建的批处理脚本
  8. 检查批处理脚本中是否包含有关目录结构的语句,好比须要读写某个位置的文件。若是有且是Windows Server 2012及之后的操做系统,就须要配置起始位置,起始位置设置为批处理的目录便可。

建立任务01

建立任务02

建立任务03

完成以上步骤后即建立任务成功,而后选中新建立的任务,点击右键选择运行,可测试任务是否可正常执行。.net

相关文章
相关标签/搜索