SQL Server Agentによるジョブのスケジューリング
「Linux」向け「SQL Server v.Next CTP 1.4」にて、「SQL Server Agent」によるジョブのスケジューリングが利用可能になりました。ジョブとステップ
「SQL Server Agent」は、スケジューリングされた管理タスクを実行するコンポーネントです。これらの管理タスクを「ジョブ」と表現します。
「ジョブ」は1つ以上のジョブステップで構成されています。
各ジョブステップは、データベースのバックアップなど自身が実行するタスクを含んでいます。
「SQL Server Agent」は、スケジュール通りに「ジョブ」を実行したり、ある特定のイベントに対応して「ジョブ」を実行したり、あるいは必要に応じて「ジョブ」を実行することができます。
例えば、業務で使用しているすべてのデータベースを業務時間終了後毎日バックアップしたければ、月曜日から金曜日の22:00にバックアップを実行するAgentジョブをスケジューリングし、自動的にバックアップを実行することができます。
制限
「Linux」向け「SQL Server v.Next CTP 1.4」では、以下の機能は現状サポートされていません。1.サポートしていないサブシステム
以下のサブシステムはサポートされていません。- CmdExec
- PowerShell
- Replication Distributor
- Snapshot
- Merge
- Queue Reader
- SSIS
- SSAS
- SSRS
2.その他サポートしていない機能
以下の機能はサポートされていません。- Alerts
- DB Mail
- Log Shipping
- Log Reader Agent
- Change Data Capture
SQL Server Agentのインストール
「SQL Server Agent」を利用するには、まず「SQL Server Agent」をインストールする必要があります。また事前に「SQL Server v.Next CTP 1.4」をインストールしておいてください。
1.SQL Server Agentのインストール
「端末」を起動して以下のコマンドを実行し、「mssql-server-agent」パッケージをインストールします。
sudo apt install mssql-server-agent
2.SQL Serverの再起動
以下のコマンドを実行し、「SQL Server」を再起動します。
sudo systemctl restart mssql-server
「SQL Server」が起動しているかどうかは、以下のコマンドで確認できます。
systemctl status mssql-server
ジョブの作成例
ジョブの作成例です。1.ジョブの作成
ジョブを作成します。CREATE DATABASE SampleDB ; USE msdb ; GO EXEC dbo.sp_add_job @job_name = N’Daily SampleDB Backup’ ; GO
2.ジョブステップの追加
ジョブステップを追加します。EXEC sp_add_jobstep @job_name = N’Daily SampleDB Backup’, @step_name = N’Backup database’, @subsystem = N’TSQL’, @command = N’BACKUP DATABASE SampleDB TO DISK = \ N”/var/opt/mssql/data/SampleDB.bak” WITH NOFORMAT, NOINIT, \ NAME = ”SampleDB-full”, SKIP, NOREWIND, NOUNLOAD, STATS = 10′, @retry_attempts = 5, @retry_interval = 5 ; GO
3.ジョブのスケジューリング
ジョブをスケジューリングします。EXEC dbo.sp_add_schedule @schedule_name = N’Daily SampleDB’, @freq_type = 4, @freq_interval = 1, @active_start_time = 233000 ; USE msdb ;
4.スケジュールのアタッチとジョブサーバーの追加
スケジュールのアタッチとジョブサーバーを追加します。EXEC sp_attach_schedule @job_name = N’Daily SampleDB Backup’, @schedule_name = N’Daily SampleDB’; GO EXEC dbo.sp_add_jobserver @job_name = N’Daily SampleDB Backup’, @server_name = N'(LOCAL)’; GO
5.ジョブの開始
ジョブを開始します。EXEC dbo.sp_start_job N’ Daily SampleDB Backup’ ; GO