この記事では、SQL ServerExpressBackupデータベースのスケジュールとSQLServerExpressBackupの自動化について説明します。
SQLServerExpressバックアップ
SQL Server Expressは無料版であり、いくつかの制限があります。例えば;データベースサイズは10GBを超えてはならず、SQL Serverエージェントが無効になっている、自動タスクが無効になっているなどの制限があります。 SQL Serverのエディションの詳細については、次の記事を参照してください。
SQL Serverの最新バージョン、エディション、およびSQLServerの履歴
SQLServerExpressバックアップのスケジュールと自動化
SQL Server Agentは、自動バックアップジョブ、Enterprise、Standardなどのエディションのメンテナンスタスクを提供し、ジョブを実行します。 Expressでは使用できないため、Windowsスケジューラを使用して自動バックアップを提供できます。
Windowsタスクスケジューラを開き、[新しいスケジューラタスク]をクリックして、タスク名と次のようなその他の設定を入力します。
スケジューラーを指定し、このステップでいつトリガーされるかを指定します。
この手順では、タスクスケジューラの実行内容を指定します。 BackupDB.batというファイルをトリガーし、BackupDB.batがDailyBackup.sqlを呼び出して実行します
ジョブの実行中は、毎晩02:00にバックアップを取り、次のように4つのバックアップを保持し、4日より古いバックアップをパージします。
BackupDB.batの内容は次のようになります。
echo off sqlcmd -S "INSTANCE_NAME" -i "C:\Backup\DailyBackup.sql" forfiles -p "C:\Backup" -s -m *.bak* /D -4 /C "cmd /c del @path"
DailyBackup.sqlの内容は次のようになります。
DECLARE @pathName NVARCHAR(512) SET @pathName = 'C:\Backup\DB_BACKUP_' + replace(convert(varchar, getdate(),111),'/','') + replace(convert(varchar, getdate(),108),':','') + '.bak' BACKUP DATABASE DB_NAME TO DISK = @pathName WITH NOFORMAT, NOINIT, NAME = N'db_backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
タスクスケジューラは、夜02:00にBackupDB.batファイルをトリガーします。このファイルはDailyBackup.sqlも実行しています。 Jobはデータベースのバックアップを取り、SQLServerExpressエディションの古いバックアップを削除します。