自动备份mssql server数据库并压缩的批处理脚本

网络编程 2025-03-25 09:51www.168986.cn编程入门

在Windows环境下,使用mssql命令行工具sqlcmd进行数据库备份,并通过调用rar进行压缩,无需依赖mssql的“维护计划”功能,有效规避权限问题。以下是详细步骤及代码:

设定备份文件夹为F:\backup\,所有备份文件将存放于此目录。若每个数据库有自己的子目录,则将此子目录设为同名数据库名(脚本可自动创建)。通过参数设置,可选择是否将数据库备份文件放置于子目录中。默认每个数据库备份文件名包含时间戳,确保不会与已存在的文件重名,便于管理。

具体执行备份操作的步骤如下:

一、开启命令行界面,输入以下代码设置日期和时间的变量:

```bash

@ECHO ON

set d=%date:~0,10%

set d=%d:-=%

set t=%time:~0,8%

set t=%t::=%

```

二、定义包含日期和时间的备份时间戳,设置备份文件夹路径。根据需求选择是否按子目录保存备份文件:

```bash

set stamp=%p%%d%%t%

set bakupfolder=F:\backup\

rem 选择是否按子目录保存备份文件(1为是,0为否)

set lay_in_subfolder=1

```

三、调用备份函数对每个数据库进行备份。此例中以对数据库foo、foo2、foo3、foo4的备份为例:

```bash

call :backupone foo

call :backupone foo2

call :backupone foo3

call :backupone foo4

```

四、定义备份函数,包括创建数据库备份、检查子目录设置、执行备份命令和压缩备份文件等步骤:

```bash

:backupone

setlocal

echo %1

set dbname=%1

if not exist %bakupfolder%%dbname% mkdir %bakupfolder%%dbname%

if %lay_in_subfolder%==1 (

set subfolder=%dbname%\ )else set subfolder=

rem 执行备份命令并创建备份文件,使用sqlcmd命令进行数据库备份操作。

sqlcmd -U sa -P "sa" -S localhost -Q "backup database %dbname% to disk='%bakupfolder%%subfolder%%dbname%%stamp%.bak'"

"C:\Program Files\WinRAR\RAR.exe" a -ep1 -r -o+ -m5 -s -df "%bakupfolder%%subfolder%%dbname%%stamp%.rar" "%bakupfolder%%subfolder%%dbname%%stamp%.bak"

endlocal&goto :EOF

```

关闭命令行界面并结束操作。这样,就可以在不使用mssql的“维护计划”功能的情况下,通过命令行工具sqlcmd进行数据库备份并调用rar进行压缩了。同时避免了权限问题,确保备份过程顺利进行。

上一篇:js正则表达式验证密码强度【推荐】 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by