バッチファイルで、SqlServerのバックアップを行う方法(.bakファイルを作る)
サンプル
バッチファイル(sql-Bck.bat)から、SQLファイル(PickDB-BackUp.sql)を呼び出し、バックアップする。
バッチファイル側 (sql-Bck.bat)
echo %date% %time% ---------------------- >>D:\BACKUP\SqlserverBackUp.LOG
echo %date% %time% BackUp Start ... >>D:\BACKUP\SqlserverBackUp.LOG
del D:\BACKUP\PickDB.BAK1
ren D:\BACKUP\PickDB.BAK PickDB.BAK1
sqlcmd -S (サーバ名\インスタンス名) -U (LoginID) -P (Password) -i D:\BACKUP\PickDB-BackUp.sql
echo %date% %time% BackUp ...End >>D:\BACKUP\SqlserverBackUp.LOG
SQLファイル側 (PickDB-BackUp.sql)
BACKUP DATABASE PickDB TO DISK = N'D:\BACKUP\PickDB.BAK' WITH INIT
バックアップ中の同時実行の制限事項
バックアップ中はほとんどの操作が可能です。
たとえば、INSERT、UPDATE、または DELETE ステートメントはバックアップ操作中でも使用できます。
ただし、データベースの作成中または削除中にバックアップ操作を開始しようとすると、データベースの作成または削除操作が完了するまで、
またはバックアップがタイムアウトするまで、バックアップ操作が待機します
データベース バックアップやトランザクション ログ バックアップ中に、次の操作を実行することはできません。
- ADD FILE または REMOVE FILE のいずれかのオプションが指定された ALTER DATABASE ステートメントなどのファイル管理操作。
- データベースまたはファイルの圧縮操作。これには自動圧縮操作も含まれます。
- バックアップ操作実行中にデータベース ファイルを作成または削除しようとすると、作成操作または削除操作は失敗します。
参考
sqlファイル側
-- スクリプト変数に設定されたテーブル名のレコードを取得 SELECT * FROM $(Param1)
-- スクリプト変数をローカル変数に代入 DECLARE @UserId char(8) SET @UserId = '$(Param2)'
batファイル側
sqlcmd -S %DB_NAME%\%INSTANCE_NAME% -i %SQL_FILE_NAME% -v Param1=%PARAM1% Param2=%PARAM2%
サイト内リンク
SQL Server
DB系
その他
OS系
Office系