WindowsバッチでSQL ServerのDBフルバックアップファイルをサクッと採取する
はじめに
Windowsバッチで、SQL Serverのフルバックアップを採取する方法について説明する。
前提
- 検証環境:Windows10 Home SQL Server 2016 Developer
- バッチファイルと同一サーバー(localhost)でSQL Server稼働
処理概要
- Windows認証でDB(DB名:SANDBOX1)に接続
- フルバックアップのファイルを採取し、D:\SQLServerBackup\DB1.bak に出力
バックアップ処理Windowsバッチ作成
- Windows認証でDB(DB名:SANDBOX1)に接続
- フルバックアップのファイルを採取し、D:\SQLServerBackup\DB1.bak に出力
バックアップ処理Windowsバッチ作成
以下のようなバッチを作成する。
SQLSVDBbackup.bat
SET PORT=1433
SET DBSV=localhost
SET INSTANCE=MSSQLSERVER
SET DBNAME=SANDBOX1
REM バックアップ出力先
SET BKUP_DIR=D:\SQLServerBackup
REM バックアップファイル名
SET BKUP_FILE_NAME=DB1.bak
REM フルバックアップ
sqlcmd -S %DBSV%\%INSTANCE%,%PORT% -Q "BACKUP DATABASE %DBNAME% TO DISK='%BKUP_DIR%\%BKUP_FILE_NAME%' WITH INIT, COMPRESSION"
REM バックアップ生成失敗時
IF NOT EXIST %BKUP_DIR%\%BKUP_FILE_NAME% GOTO BKUP_ERR
GOTO END
REM エラー処理
:BKUP_ERR
ECHO バックアップに失敗
EXIT /B 9
REM 正常終了
:END
EXIT /B 0
以下、実行結果抜粋
D:\SQLServerBackup>sqlcmd -S localhost\MSSQLSERVER,1433 -Q "BACKUP DATABASE SANDBOX1 TO DISK='D:\SQLServerBackup\DB1.bak' WITH INIT, COMPRESSION"
データベース 'SANDBOX1' の 384 ページ、ファイル 1 のファイル 'SANDBOX1' を処理しました。
データベース 'SANDBOX1' の 2 ページ、ファイル 1 のファイル 'SANDBOX1_log' を処理しました。
BACKUP DATABASE により 386 ページが 0.052 秒間で正常に処理されました (57.851 MB/秒)。
実行結果確認
トラブルシューティング
接続情報もろもろが正しいのに、実行時に以下のエラーが発生する場合、TCP/IPが無効化されている可能性が高い。
SQL Server構成マネージャーの設定を見直すこと。
Sqlcmd: エラー: Microsoft ODBC Driver 13 for SQL Server: TCP Provider: 待ち操作がタイムアウトになりました。
Sqlcmd: エラー: Microsoft ODBC Driver 13 for SQL Server: Login timeout expired。
Sqlcmd: エラー: Microsoft ODBC Driver 13 for SQL Server: A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.。
補足
- 当サンプルはフルバックアップファイルを採取するのみ。差分バックアップを採取する場合は必要な処理を実装すること。
- 日次バックアップしたい場合は、当batファイルをタスクスケジューラーなどで毎日実行できるようにしてやればOK。
- 当バッチはサンプルとして同一サーバーにbakファイルを出力しているが、ファイルサーバー等にコピー・リネームする処理など必要に応じて実装すること。
Author And Source
この問題について(WindowsバッチでSQL ServerのDBフルバックアップファイルをサクッと採取する), 我々は、より多くの情報をここで見つけました https://qiita.com/yuruise/items/58a6e5e0bf737ba31fe5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .