SQLサーバーのバックアップ設定(※Exepressの場合)

環境設定,業者様向け情報

※これは業者様向け情報です。

SQLServer Expressの場合、自動バックアップ機能がないのでバックアップ用SQL(.sql)とバッチファイル(.bat)を作り、Windowsのタスクスケジューラを利用します。

c:\sara2019s\backupBat フォルダにありますので編集して下さい。

環境例:

・SQLサーバーのインスタンス:MYCOMPUTER¥EXP2017
・バックアップ先:Yドライブの¥沙羅バックアップ¥日本語フォルダ名は何かと問題が出ますので、D:\sara_backup\ のように半角文字名のフォルダに指定。

バックアップ用SQL(.sql)

、、、、っと思いましたが、これだとファイルが上書きされていくだけで、少々、心もとないので、日付時間でファイル名を作った方がいいかもです。

★ファイル名: D:\sara_backup\saraback.sql

--日付時刻を表す文字列を取得
DECLARE @DAYSTR CHAR(12) = FORMAT(GETDATE(),'yyyyMMddHHmm')

--バックアップ先フルパスを形成(D:\sara_backup\sarabackup_20201003.bak のようになる)
DECLARE @BACKUP_FILE VARCHAR(50) = N'D:\sara_backup\sarabackup_' + @DAYSTR + '.bak'

--バックアップ実行
BACKUP DATABASE [sara2019] 
  TO  DISK = @BACKUP_FILE WITH NOFORMAT, NOINIT
  ,  NAME = N'完全 データベース バックアップ'
  , SKIP, NOREWIND, NOUNLOAD,  STATS = 10

バッチファイル(.bat)

★ファイル名: D:\sara_backup\saraback.bat

sqlcmd -S MYCOMPUTER\EXP2017 -U sa -P saのパスワード -i D:\sara_backup\saraback.sql > D:\sara_backup\backup.log

※いったん、Dドライブに生成するが、ついでの別のドライブにもコピーするとか???
※しかし、SQLコマンドでネットワークドライブなどに生成しようとすると、権限の問題でアクセスできないので、

「事前にSQL Server サービスの実行アカウント(SQL Server 構成マネージャからプロパティ→ログオンで変更できる)を
ネットワーク ドライブに対して書き込み権限があるアカウントに変更
→SQL Server サービスの再起動→もう一度ネットワークドライブへバックアップ、をやってみてできることを確認してください。

※SQLServer構成マネージャー: SQLServerManager14.msc

タスクスケジューラで利用する

[Windows]+[R]キーで[ファイル名を指定して実行]→「taskschd.msc」でタスクスケジューラを起動。(もしくは、「コントロールパネル」→[管理ツール]→[タスクスケジューラ])

基本タスクで作成したbatファイルを指定

沙羅を終了する時に自動バックアップした方がいいかもです。。。。

※組み込み検討いたします。