mssql serverデータベースを自動的にバックアップし、圧縮するバッチ・スクリプト

1703 ワード

1. set bakupfolder=F:\backup\
バックアップファイルはディレクトリF:backup(このディレクトリは事前に作成する必要があります)に保存されます.
2.デフォルトでは、各データベースはbakupfolderの下にある同じ名前のサブディレクトリ(スクリプト自動作成)に配置されます.lay_の設定in_subfolder=0の場合、bakupfolderに直接配置されます
3.バックアップファイル名にバックアップを自動的に追加する時の時間文字列は、バックアップディレクトリの名前が重複する心配がなく、管理も容易である.
4. call :backupone foo
fooはバックアップが必要なデータベースで、他のデータベースをバックアップする必要があります.同じように1行1本書けばいいです.
5.コマンドライン駆動バックアップ操作:sqlcmd-U sa-P"sa"-S localhost-Q"xxx"
ここでデータベースに接続するユーザー名のパスワードはsaです.実際のユーザー名のパスワードに変更してください.mssqlパスワードに特殊な文字がいくつかある場合は、エラーが発生する可能性がありますので、二重引用符を付けます.パスワードが簡単なら、追加しなくてもいいです.でもsaパスワードって、普通は変态なんでしょうね~~
 
  
@ECHO ON
set d=%date:~0,10%
set d=%d:-=%
set t=%time:~0,8%
set t=%t::=%
set stamp=%p%%d%%t%
set bakupfolder=F:\backup\
rem 1 ;0
set lay_in_subfolder=1
call :backupone foo
call :backupone foo2
call :backupone foo3
call :backupone foo4
goto :EOF
@ECHO OFF
: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 echo %bakupfolder%%subfolder%%dbname%%stamp%.bak
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