乐趣区

关于数据库:SQL-Server使用脚本实现自动备份

因服务器装置的 SQL Server 版本不反对主动定时备份,需自行实现,大略思路为:

  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 文件,填入以下内容。

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

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

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 及当前的操作系统,就须要配置起始地位,起始地位设置为批处理的目录即可。

实现以上步骤后即创立工作胜利,而后选中新创建的工作,点击右键抉择 运行,可测试工作是否可失常执行。

退出移动版