Microsoft SQL Server 2016 Expressの定期バックアップ方法
こんにちは、hishinumaです。
今回もあまり使う機会は無いけど知っていて損はない
[SQL Server Express]の定期バックアップ方法のをお話したいと思います。
■注意事項
・Express以外の有償のMSSQLについてはバックアップ機能が標準であります。
・この記事を参考に操作を行い、不具合が生じた場合も、自己責任でお願い致します。
・複数世代のバックアップを取得する場合は曜日分のスクリプトとバッチファイルが必要となります。
・ディレクトリについては事前に作成をお願いします。
手順は下記な感じです。
■検証環境
WindowsServer2016
SQL Server 2016 Express
■[バッチファイル/スクリプト/ログ]保存先
C:\MSSQL_backup\bat
db_backup.bat[バッチファイル]
db_backup.sql[スクリプト]
db_backup.log[ログファイル]
■[バックアップファイル]保存先
C:\MSSQL_backup
db01_na_01.bak[バックアップファイル]
■対象DB
DB01_NA
■実行日時
毎日02:00に定期バックアップ
■手順
・[Microsoft SQL Server Management Studio]を起動しバックアップスクリプトを作成します。
————————————————————————————————–
・対象のDB[DB01_NA]を選択肢し[タスク]→[バックアップ]を選択
————————————————————————————————–
・[スクリプト]を選択肢[db_backup.sql]というファイル名でスクリプトを保存します。
————————————————————————————————–
■[スクリプト]の中身
---------------------------------------------------------------- BACKUP DATABASE [DB01_NA] TO DISK = N'C:\MSSQL_backup\db01_na_01.bak' WITH NOFORMAT, NOINIT, NAME = N'DB01_NA-完全 データベース バックアップ', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO ----------------------------------------------------------------
※[DB01_NA]の完全バックアップを[C:\MSSQL_backup\db01_na_01.bak]へ保存という内容になります。
■[タスクマネージャー]に予定を登録する。
————————————————————————————————–
・[タスクマネージャー]を起動し[基本タスクの作成]を選択
————————————————————————————————–
・[基本タスクの作成ウイザード]が表示されるので下記の通り入力し[次へ]を選択
名前:MSSQLバックアップ
説明:MSSQLの定期バックアップを作成
————————————————————————————————–
・[毎日]を選択し[次へ]を選択
————————————————————————————————–
・[開始]の開始時間を[02:00]と入力し[次へ]を選択
————————————————————————————————–
・[プログラムの開始]を選択し次へ
————————————————————————————————–
・[参照]を選択し[C:\MSSQL_backup\bat\db_backup.bat]を選択し[次へ]を選択
■[db_backup.bat]の中身
sqlcmd -S [ホスト名]\SQLEXPRESS -i C:\MSSQL_backup\bat\db_backup.sql > C:\MSSQL_backup\bat\db_backup.log
※今回はWindows認証モードでsqlcmdを実行しています。個別にDBユーザを作成しユーザを指定することでユーザでのバックアップ実行も可能です。
■[sqlcmd]コマンド解説ページ
https://technet.microsoft.com/ja-jp/library/ms165702(v=sql.105).aspx
————————————————————————————————–
・最後に[完了]を選択してタスクスケジューラに登録を完了させる
————————————————————————————————–
・タスクスケジューラにMSSQLのバックアップの予定が登録されている事を確認
例として毎日MSSQLのバックアップを1世代のバックアップの設定となりますが今回紹介した手法を[月~日]の7世代取得するように
スクリプトの用意とタスクスケジューラ登録を事により取得することが可能となります。
今回はここまでとなります。