通过批处理脚本从MS SQL Server 2008 Express数据库备份数据库

我需要批处理脚本来从Microsoft SQL 2008 Express Edition备份选定的数据库。 不幸的是,MS SQL Server 2008 Express版缺乏MS SQL 2008 Standard中的维护可视化数据库备份工具,因此我们需要一个批处理脚本来备份数据库。

我写了一个通用脚本从MS Sql Server Express备份选定的数据库。 脚本通过一系列数据库循环,并为每个数据库生成单独的.bak。 备份文件名以数据库名称开始,以时间和date结束。 log.log文件中logging了事件,包括数据库备份任务的详细信息,所以不存在现有的备份。 还有一些小的细节,如备份开始时间。

在此脚本中,您需要定义要备份的数据库数组,sa用户/密码以及SQL Server和实例。 所有这些修改之后,都是从任务调度器调用batch file。

脚本代码:

@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 

备份文件名的外观