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

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

我需要批处理脚本来备份 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

备份文件名外观

相关内容