2009年11月06日

SQLServer Express版の自動バックアップ

SQLServer2005の無償版であるExpress版ではAgentサービスが実装されていないため管理ツールSQLServer Management Studio(Express)からメンテナンス機能が使えない。
よってタスクメニューから手動でのバックアップはできても自動で(定期的に)バックアップを行うことができない。そのためどうしてもWindowsのタスク機能を使ってバッチ処理などで実行させる必要がある。

事例:
SQLServerインスタンス:SQLEXPRESS
データベース名:testdb
SQLServer認証ユーザー名:sa、同パスワード:pass
バックアップ保存先フォルダ:C:\sqlback

用意するのは2つのファイル(ファイル名は任意)
これをバックアップ保存先フォルダに配置する

1.バックアップ命令文(SQL):backup.sql
BACKUP DATABASE testdb TO DISK='C:\sqlback\testdb.bak' WITH INIT
GO
※解説
@DISK=''でバックアップファイルを指定したパスに保存
AWITH INIT の文が無いと、バックアップデータが毎回追加されてtestdb.bakが大きくなってしまう。この文を付けることで上書きモードになる。

2.バッチファイル(BAT):backup.bat
sqlcmd -S .\SQLEXPRESS -U sa -P pass -i C:\sqlback\backup.sql > C:\sqlback\backup.log
※解説
sqlcmdの詳細はサイトで確認
@-S はサーバー名(インスタンス名含)
A-U はログイン名
B-P はログインパスワード
 注:-U -P はSQLServer認証の場合に必要だが、Windows認証の場合は -E だけになる(下参照)
 例:sqlcmd -S .\SQLEXPRESS -E -i C:\sqlback\backup.sql
C-i は実行するSQLのファイル名
D > 以下は無くても良いがログを残したい時に使う

あとはWindowsのタスクでバッチファイルbackup.batを指定すれば良い。
今回は毎日指定された時刻に行う予定で作成したので、前日以前のバックアップは保存されない。
1週間分バックアップを保存したい場合には、曜日毎に別々のSQLとバッチファイルを用意してタスクに登録すれば良い。


posted by なっちゃん at 11:43| 静岡 ☀| Comment(2) | TrackBack(0) | ETC | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
こんにちは。
以前、SBS2000を使っていたのでAgentで自動バックアップを取っていたのですが、2008になってDB付きのSBSがやたら高価になってしまったためにStdを入手し、ExpressでSQLを使っています。
この記事のおかげでExpressでも自動バックアップを問題なく設置することができました。
ありがとうございます。

でもSQL2008や2008Serverはやたらとセキュリティが厳しいですね。厳しいのはいいのですが、接続できるようにするための明快な解説がなかなか探し出せなくて困惑しています。
もしよければ、その解説も記載していただけると凄く嬉しいです。^^;
Posted by とある駆け出しシステム担当者 at 2010年04月23日 15:52
このTipsは私自身が直面した問題や解決に苦労した経験から出来ているので、直面してない問題のTipsは残念ながら書けません(^^;
その代わり、現場で実際に経験したことなので書籍類には到底載っていないかなりレアな問題も取り扱っているという変な自負もあります。
まぁ、気長にお待ちいただくしかないです。
Posted by なっちゃん at 2010年04月23日 16:45
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。