がいよう
業務でたくさんやるから、バッチ化したんだけど俺しか使わないから、ここに書くわ。。。
僕のこと見てくんないっ!ひどい!😠
やっていること
基本的にコマンドを叩いているだけだからそんなエッセンスはないんだけど、一応、ポイントがある
- リストア前にオフラインしている
- デタッチはコマンドでやるとうまくいかない😤データベースが使用中なんだってさ
これだけは注意!!
対象のデータベース用の.bakを置いていないと危険だよっ
空のデータベースをぶっこんで空っぽのデータベースになるから!
一応これを流す前にバックアップをしよう!!自己責任だぞ🤧
バックアップバッチも作ってんだけど、めんどくさいから他の人のサイトを見てねーー
Windowsバッチとかで書いとけばできるお
@set /P SERVER_NAME="input the database server name>>>>"
@set /P LOGIN_USER="input a login user>>>>"
@set /P PASSWERD="input a passwerd>>>>"
@set /P RESTORE_BAK="input the path .bak file for restore"
@set LOG_PATH=.\restore.log
@echo ---------------------
@echo 接続先:%SERVER_PATH%
@echo ログイン:%LOGIN_USER%
@echo パスワード:%PASSWERD%
@echo bakファイル元:%RESTORE_BAK%
@echo ---------------------
pause
@echo make a database offline...
sqlcmd -S %SERVER_PATH% -U %LOGIN_USER% -P %PASSWERD% -Q "alter database %SERVER_NAME% set offline with rollback immediate" >> %LOG_PATH%
@echo restore a database...
sqlcmd -S %SERVER_PATH% -U %LOGIN_USER% -P %PASSWERD% -Q "restore database %SERVER_NAME% from disk='%RESTORE_BAK%'" >> %LOG_PATH%
pause
排他アクセス制限
- 排他アクセスでデータベースを復元できねえことがある
- そういう場合は、オフラインかデタッチをする→復元
- デタッチコマンドが上手くいかないからオフラインしているわけ