sql server 在 win server 2008 环境下实现自动备份

最近接手一个项目,项目中使用的数据库为 sql server 2008 R2,很久不用对好多操作都已经忘了。找了很久资料东拼西凑总算把自动备份给搞定,再次证明好记性不如烂笔头,特记录在此给有需要的兄弟做一个参考。

操作共分为三个部分:

  • sql 脚本,主要用来备份数据库文件并设置保存地址
  • bat 文件,主要用来链接 sql server 数据库并执行 sql 脚本
  • 任务计划程序,主要用来定时执行 bat 文件

下面开始贴代码

1. sql 脚本(dbbak.sql)

declare @date nvarchar(10) --定义日期变量
set @date = CONVERT(varchar(11),GETDATE(),112)+REPLACE(CONVERT(varchar(12),GETDATE(),108),':','') --为日期变量赋当前日期,日期格式为 yyyyMMddHHmmss 举例 20210416113753
declare @path nvarchar(250) -- 定义备份路径变量
set @path = 'D:\\dbbak\\' --赋值
declare @db_filename nvarchar(150) --定义文件名变量
set @db_filename = @path + 'db_'+@date+'.bak' --拼字符串,形成完整的备份文件路径
backup database DBNAME TO DISK=@db_filename --执行数据库备份操作,注意 DBNAME为你实际要备份的数据库名,记得改

改完后连接到 master 测试执行,在D盘 dbbak 文件夹下出现 .bak 文件,说明脚本没问题再进行下一步

2. bat 文件(dbbak.bat)

sqlcmd -S 172.106.84.448 -U sa -P sa_password -i .\dbbak.sql -o .\dbbak.log

注意每个命令标识后面是由空格隔开的,千万不要黏在一起。
.bat 文件是不能编辑的,所以创建一个 .txt 文件写好上面的代码后更改后缀为 .bat 就行了。
双击执行刚改好的 .bat 文件,这时候会弹出命令窗口,不要关闭窗口,执行完毕后窗口会自动关闭。根据数据库数据量大小执行时长有所不同,如果一闪而过说明 .bat 文件是有问题的,请参考上面代码自行修改。

3. 任务计划程序

  • 点击开始菜单,依次点击 “所有程序 / 附件 / 系统工具 / 任务计划程序”

  • 选中 “任务计划程序库”,再点击右侧 “新文件夹”,输入文件夹名称点击确定
    在这里插入图片描述

  • 选中 “dbbak” 文件夹,再点击右侧 “创建基本任务”在这里插入图片描述

  • 输入名称及描述点击下一步 (名称是必须的,描述是可选的)
    在这里插入图片描述

  • 选择执行模式,根据自己业务需求来选。我这边由于后台的不完善,所以经常要使用到脚本命令去操作数据库,为避免误操作导致数据丢失所以选择每日备份。如果后台操作完善或数据不敏感也可以选择每周备份一次或其他选项,毕竟备份文件过大也挺占磁盘空间。
    在这里插入图片描述

  • 选择间开始时间及间隔天数后点击下一步 (时分秒设置好后此后的每一天都会在指定时间执行,间隔1天为每天都执行,建议设置时间为用户不活跃的时间段,避免影响用户使用)
    在这里插入图片描述

  • 选择 “启动程序” 选项点击下一步
    在这里插入图片描述

  • 点击浏览选择 .bat 文件,将文件路径填入 “起始于” 后面的文本框 (例:D:\dbbak\bak_implement\) 然后点击下一步
    在这里插入图片描述

  • 点击 “完成”,这时候已经算是完成这个定时程序了,但是为了安全起见我们还要进行下面两步
    在这里插入图片描述

  • 这时候就可以在 dbbak 文件夹下看到我们刚创建的定时程序了
    在这里插入图片描述

  • 双击 dbbak 定时程序选择 “设置” 选项,勾选 “超过以下时长,停止任务” 并选好时间点击确定,这下就算彻底完成了。(勾选这个的目的是避免执行时间过长或执行失败卡住而影响线上业务的执行)
    在这里插入图片描述
    至此所有操作已经完成,我的的环境为 win server 2008 + sql server 2008 R2,其他环境暂时没有测试,如有问题请不吝指教。


版权声明:本文为u013615113原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。