我需要批处理脚本来备份 Microsoft SQL 2008 Express Edition 中选定的数据库。遗憾的是,MS SQL Server 2008 Express 版本缺少 MS SQL 2008 Standard 中称为维护的可视化数据库备份工具,因此我们需要一个批处理脚本来备份数据库。
答案1
我编写了一个通用脚本,用于备份 MS Sql Server Express 中的选定数据库。脚本循环遍历数据库数组并为每个数据库生成单独的 .bak。备份文件名以数据库名称开头,以时间和日期结尾。事件记录在 log.log 文件中,包括数据库备份任务详细信息,因此不会覆盖任何现有备份。还有一些小细节,例如备份开始时间。
在此脚本中,您需要定义要备份的数据库数组、sa 用户/密码以及 SQL Server 和实例。完成这些修改后,所有需要做的就是从任务计划程序调用批处理文件。
脚本代码:
@echo off
::databases array
set baza[0]=DATABSE_1
set baza[1]=DATABSE_2
::some of variables
set var=%usersa%
set var=%passsa%
set var=%instance%
set "x=0"
set hr=%TIME: =0%
set hr=%hr:~0,2%
set min=%TIME:~3,2%
set sec=%TIME:~6,2%
set czas=%hr%%min%%sec%
::database access data and instance
set usersa=sa
set passsa=sa
set instance=HOSTSERVER\SqlServerName
set backupath=E:\SQL_BACKUP\
echo Backup Start %date%_%czas%>>log.log
echo.>>log.log%%echo.>>log.log%%echo.>>log.log
:loop
if defined baza[%x%] (
call osql -S %instance% -U %usersa% -P %passsa% -d %%baza[%x%]%% -Q "BACKUP DATABASE %%baza[%x%]%% TO DISK = '%backupath%%%baza[%x%]%%_%date%_%czas%.bak'" >>log.log
set /a "x+=1"
GOTO :loop
)
echo.>>log.log%%echo.>>log.log%%echo.>>log.log