经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
SQL Server使用脚本实现自动备份
来源:cnblogs  作者:不止编码  时间:2021/4/12 9:48:13  对本文有异议

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

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

1. 创建SQL脚本

新建db_backup.sql文件,填入以下内容。

  1. -- 定义需要备份的数据库
  2. DECLARE @backupDatabase VARCHAR(20) = 'DB_NAME'
  3. -- 定义数据库备份文件存放的基础路径
  4. DECLARE @backupBasePath VARCHAR(MAX) = 'D:/DB_NAME/'
  5. -- 定义备份文件名,文件名格式:<DB>_backup_<yyyyMMdd>_<HH:mm:ss.SSS>.bak
  6. DECLARE @backupFileName VARCHAR(50) = NULL
  7. -- 获取当前时间戳
  8. DECLARE @backupTime DATETIME = CURRENT_TIMESTAMP
  9. -- 处理备份文件名称
  10. SET @backupFileName = @backupDatabase + '_backup_' + CONVERT(VARCHAR(25), @backupTime, 112) + '_' + REPLACE(CONVERT(VARCHAR(25), CURRENT_TIMESTAMP, 114), ':', '') + '.bak'
  11. -- 处理完整的备份文件路径
  12. SET @backupBasePath = @backupBasePath + @backupFileName
  13. -- 执行备份
  14. BACKUP DATABASE @backupDatabase TO DISK = @backupBasePath

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

到这里已经可以使用脚本对数据库进行备份,但仍需手动执行脚本,无法实现自动定时备份的需求。

2. 创建批处理脚本

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

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

以下为使用到的各个选项的解释:

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

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

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

3. 创建Windows任务计划

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

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

创建任务01

创建任务02

创建任务03

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

原文链接:http://www.cnblogs.com/mtcoding/p/14627663.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号