首页 > 数据库 >通过 sqlcmd 命令 + Windows 定时任务实现数据库的定时备份

通过 sqlcmd 命令 + Windows 定时任务实现数据库的定时备份

时间:2023-03-10 17:58:12浏览次数:55  
标签:Windows 备份 db Server -- sqlcmd SQL 定时 数据库

SQL Server 2022 Developer 是一个全功能免费版本,许可在非生产环境下用作开发和测试数据库。

公司用的 SQL Server 2022 Express 是 SQL Server 的一个免费版本,只有基础的存储功能,没有维护计划与定时作业的功能。网上搜了有一下可以通过 sqlcmd 命令 + Windows 定时任务实现数据库的定时备份,做一下记录。

官方文档

sqlcmd 实用工具 - SQL Server | Microsoft Learn

参考的博客

SQL SERVER 数据库备份的三种策略及语句 - kevin860 - 博客园 (cnblogs.com)

使用sqlcmd命令行执行.sql文件 - 峡谷少爷 - 博客园 (cnblogs.com)

结果

db_backup 文件夹下内容

db-full.bat 命令内容

::echo off ::
@echo off
SET dbhost=localhost
SET dbuser=sa
SET dbpasswd=123123

echo 开始执行全量备份数据库脚本...
for %%i in (db-full\all_sql\*.sql) do (
    echo 正在执行 %%i 请稍后...
    sqlcmd -S %dbhost% -U %dbuser% -P %dbpasswd% -i %%i
)

echo 所有脚本执行完毕。
pause # 定时任务执行的时候删除掉 
  • -i 表示执行的SQL脚本
  • for %%i in (db-full\all_sql\*.sql) 循环文件夹下的所有SQL脚本

SQL Script

-- 定义需要备份的数据库
DECLARE @backupDatabase VARCHAR(100) = 'db_name'

-- 定义数据库备份文件存放的基础路径
DECLARE @backupBasePath VARCHAR(MAX) = 'C:/Users/Administrator/Desktop/db_backup/db-full/'

-- 定义备份文件名,文件名格式:<DB>_backup_<yyyyMMdd>_<HH:mm:ss.SSS>.bak
DECLARE @backupFileName VARCHAR(100) = 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 WITH NOFORMAT, NOINIT, NAME = N'db_name-full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10

差异与全量备份命令

官方文档

备份和还原 Linux 上的 SQL Server 数据库 - SQL Server | Microsoft Learn

BACKUP (Transact-SQL) - SQL Server | Microsoft Learn

-- 全量备份
BACKUP DATABASE [wxh] TO DISK = N'C:\Backup\wxh.bak' WITH NOFORMAT, NOINIT, NAME = N'wxh-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10

-- 差异备份
BACKUP DATABASE [wxh] TO DISK = N'C:\Backup\wxh.bak' WITH DIFFERENTIAL, NOFORMAT, NOINIT, NAME = N'wxh-Differential Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10

DIFFERENTIAL 全量与差异备份通过该字段配置

只能与 BACKUP DATABASE 一起使用,指定数据库备份或文件备份应该只包含上次完整备份后更改的数据库或文件部分。 差异备份一般会比完整备份占用更少的空间。 对于上一次完整备份后执行的所有单个日志备份,使用该选项可以不必再进行备份。

备注 :默认情况下,BACKUP DATABASE 创建完整备份。

有关详细信息,请参阅 差异备份

还原看这里

SQL Server 图解备份(完全备份、差异备份、增量备份)和还原 - 五维思考 - 博客园 (cnblogs.com)

标签:Windows,备份,db,Server,--,sqlcmd,SQL,定时,数据库
From: https://www.cnblogs.com/shenghuotaiai/p/17204245.html

相关文章