SQL Server 2008R2 Expressのバックアップを手動でとってましたが、万が一を考えて自動バックアップに行いました。
有償版ではSQL Server Agentを使うことで自動バックアップが可能なんですが、Express版はAgentがないためsqlcmdコマンドを使うんですが、忘れそうなのでメモしておきます。
自動バックアップはsqlcmd+タスクスケジューラを使う
自動バックアップのやり方は下記の通り。
- SSMSを起動
- データベース→タスク→バックアップを選択
- 各種設定を行い、スクリプトを保存する(backup.sql)
ファイルの保存先はシステムドライブ以外の方がいいかな。 - バッチファイルを作成(backup.bat)
バッチファイルに記述するコマンドは下記の通り。
>sqlcmd –S サーバ名(インスタンス名も) –E –i スクリプトファイルパス
※Windows認証を使っている場合は、-E。
SQL Server認証の場合は、-U ユーザ名 –P パスワード。 - タスクスケジューラに4のバッチファイルを登録
設定後はテストをしましょうね
設定後、一度タスクを実行し、データを変更・削除し、復元してみましょう。
復元方法がわからないと、障害発生後の対応に時間がかかりますから。
当然ですが、変更・削除するデータはテスト用にしましょうね!
余談:ファーストサーバの大規模障害から学ぶこと
先日起きた「ファーストサーバの大規模障害」ニュースを見て、非常に危機感を覚えました。
「ホスティング会社に預けておけばハード障害があっても大丈夫!」と思っている人が多いと思いますが、私はホスティング系を一切信用していません。
回線費用やサーバ管理費などランニングコストを考えるとホスティングは非常にいいのですが、基本「消えてもいい」「消されてもしょうがない」くらいの気持ちで使うべきではないでしょうか。
また、利用者側のバックアップ運用も重要です。
リスク管理のしっかりした会社、または、人間がいればサービス利用者側での多重バックアップは普通行なっています。
小容量だろうが大容量だろうが関係なくです。
RAID1 HDDや光ディスクのコストは全データ削除・紛失に比べれば大した金額ではありませんから。
今回の障害を対岸の火事と思わず、自分のことだと思い、一度見なおしてみてはいかがでしょうか。
※理解できない・知ろうとしない上司・経営者がいると大変でしょうが・・・