SQLServer Expressで自動バックアップの取り方
小規模のWebアプリであれば、SQL Server Expressで事足りることも多く利用されている方も多いと思います。
しかしSQL Server Expressには製品版と比べ、いくつかの機能の制限がかけられています。
メンテナンスプランによる自動バックアップ機能もそのうちの一つです。
勿論手動でのバックアップはできますが、SQL Server Expressでも自動でバックアップを作成したいので、その方法を調べました。
自動バックアップの取り方の手順
方法としては、SQL Serverの機能は使えないので、Windowsのタスクスケジューラを使用します。
バックアップを作成するためのSQL(.sql)と、それを実行するバッチファイル(.bat)作成し、タスクスケジューラで定期的にバッチの実行を行います。
そうすることで定期的なバックアップを取ることができるようになります。
バックアップを作成するためのSQL
まずはバックアップを作成するためのSQLを用意します。
作成したSQLは c:\backup\backup.sql として保存しておきます。
実際のSQLは手書きでもよいのですが、ManagementStudioから以下の手順で簡単に作成できます。
ManagementStudioのデータベースから右クリックし、タスク -> バックアップをクリックします。
上部のスクリプトから指定された条件でバックアップを作成するスクリプトが自動で作成されます。
作成したSQLは次の通りです。
BACKUP DATABASE [TestDB] TO DISK = N'C:\backup\TestDB.bak' WITH NOFORMAT, NOINIT, NAME = N'TestDB-完全 データベース バックアップ', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
SQLを実行するバッチファイルの作成
次に作成したSQLを実行するためのバッチファイルを作成し、任意の場所に保存しておきます。
SQLを実行するためのバッチファイルのコマンド例を以下に記します。
sqlcmd -S MYPC\SQLEXPRESS -U sa -P sqlpass -i c:\backup\backup.sql > c:\backup\backup.log
コマンドの意味はコマンドプロンプトで「SQLCMD /?」を実行してやると確認できますので必要なパラメータを設定してください。
とりあえずここで作成したコマンドの意味を説明します。
sqlcmd | SQL Serverをコマンドラインで管理するためのツール |
---|---|
-S | サーバ名 |
-U | SQL Serverのユーザー |
-P | SQL Serverのパスワード |
-i | 実行するSQLのファイル |
ここまでで作成したバッチファイルをダブルクリックで実行してやると、DBのバックアップ作成が開始されるはずです。
バックアップファイルとログを確認してください。
問題がなければ、あとはこのバッチをタスクスケジューラで定期的に実行されるように設定するだけです。
タスクスケジューラの設定
タスクスケジューラへの登録手順は次の通りです。
- スタートメニュー -> コントロールパネル -> 管理ツール -> タスク スケジューラ をクリックし起動します。
右側の操作パネルから、[基本タスクの作成]をクリックしてタスクを作成します。
- タスクの名前と説明を入力して、[次へ]をクリックします。
- タスクのトリガー(タスクを起動する間隔)を選択します。
- 上で選択したトリガーの詳細を入力し、[次へ]をクリックします。(画面は選択したトリガーによって異なります。)
- 操作で[プログラムの開始]を選択し、[次へ]をクリックします。
- プログラム/スクリプトで作成したバッチファイルを選択し、[次へ]をクリックします。
- 内容を確認し、[完了]をクリックします。
これでタスクスケジューラにバックアップを作成するためのタスクが登録されました。
あとは指定したタイミングでタスクが実行されバックアップが作成されているか、
バックアップファイルとログファイルを確認しておきましょう。
コメントを書く