kledgeb Ubuntuの使い方や日本語化、アプリの使い方を紹介しています。

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


関連記事一覧
オプション