web-dev-qa-db-ja.com

バッチスクリプトを使用してMSSQL Server 2008Expressデータベースからデータベースをバックアップする

Microsoft SQL 2008 ExpressEditionから選択したデータベースをバックアップするためのバッチスクリプトが必要です。残念ながら、MS SQL Server 2008 Expressエディションには、MS SQL 2008 StandardのMaintenanceと呼ばれるビジュアルデータベースバックアップツールがないため、データベースをバックアップするためのバッチスクリプトが必要です。

1
integratorIT

MS Sql ServerExpressから選択したデータベースをバックアップするためのユニバーサルスクリプトを作成しました。スクリプトはデータベースの配列をループし、データベースごとに個別の.bakを生成します。バックアップファイル名はデータベース名で始まり、時刻と日付で終わります。イベントは、データベースバックアップタスクの詳細を含むlog.logファイルに記録されるため、既存のバックアップは上書きされません。また、バックアップの開始時間など、いくつかの小さな詳細。

このスクリプトでは、バックアップするデータベースアレイ、ユーザー/パスワード、SQLServerとインスタンスを定義する必要があります。これらの変更をすべて行う必要がある後は、タスクスケジューラからバッチファイルを呼び出します。

スクリプトコード:

@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

backups filename look

1
integratorIT