Microsoft SQL Server エージェント ジョブを作成して Linux 上で実行する

適用対象:SQL Server - Linux

SQL Server ジョブを使用して、SQL Server データベースで同じ一連のコマンドを定期的に実行します。 このチュートリアルでは、Transact-SQL と SQL Server Management Studio (SSMS) の両方を使用して、Linux 上で実行される SQL Server エージェント ジョブを作成する方法の例を示します。

  • Linux 上に SQL Server エージェントをインストールする
  • データベースのバックアップを毎日実行する新しいジョブを作成する
  • ジョブのスケジュールを設定して実行する
  • SSMS で同じ手順を実行する (省略可能)

Linux 上の SQL Server エージェントに関する既知の問題については、「Linux 上の SQL Server 2017 のリリース ノート」を参照してください。

前提条件

このチュートリアルを完了するには、次の前提条件を満たす必要があります。

次の前提条件には対応しなくてもかまいません。

SQL Server エージェントを有効にする

Linux 上で SQL Server エージェントを使用するには、まず SQL Server が既にインストールされているコンピューターで SQL Server エージェントを有効にする必要があります。

  1. SQL Server エージェントを有効にするには、次の手順に従います。

    sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
    
  2. 次のコマンドを使用して SQL Server を再起動します。

    sudo systemctl restart mssql-server
    

Note

SQL Server 2017 (14.x) CU 4 以降、SQL Server エージェントは mssql-server パッケージに含まれており、既定では無効になっています。 CU4 より前のバージョンでエージェントを設定するには、「Linux 上に SQL Server エージェントをインストールする」を参照してください。

サンプル データベースの作成

次の手順に従って、SampleDB という名前のサンプル データベースを作成します。 このデータベースは、毎日のバックアップ ジョブを実行するために使用されます。

  1. Linux コンピューター上で、bash ターミナル セッションを開きます。

  2. sqlcmd を使用して Transact-SQL CREATE DATABASE コマンドを実行します。

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'CREATE DATABASE SampleDB'
    
  3. サーバー上のデータベースを一覧表示して、データベースが作成されていることを確認します。

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'SELECT Name FROM sys.Databases'
    

Transact-SQL を使用してジョブを作成する

次の手順では、Transact-SQL コマンドを使用して、Linux 上に SQL Server エージェント ジョブを作成します。 このジョブによって、サンプル データベース (SampleDB) の毎日バックアップが実行されます。

ヒント

任意の T-SQL クライアントを使用して、これらのコマンドを実行できます。 たとえば、Linux 上では、Linux に SQL Server コマンドライン ツール sqlcmd および bcp をインストールすることや Visual Studio Code 用 SQL Server 拡張機能を使用することができます。 リモート Windows Server から SQL Server Management Studio (SSMS) でクエリを実行したり、次のセクションで説明されているジョブ管理用の UI インターフェイスを使用したりすることもできます。

  1. sp_add_job を実行して、Daily SampleDB Backup という名前のジョブを作成します。

    -- Adds a new job executed by the SQLServerAgent service
    -- called 'Daily SampleDB Backup'
    USE msdb;
    GO
    EXEC dbo.sp_add_job
       @job_name = N'Daily SampleDB Backup';
    GO
    
  2. sp_add_jobstep を呼び出して、SampleDB データベースのバックアップを作成するジョブ ステップを作成します。

    -- Adds a step (operation) to the job
    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. 次に、sp_add_schedule を使用して、ジョブの日次スケジュールを作成します。

    -- Creates a schedule called 'Daily'
    EXEC dbo.sp_add_schedule
       @schedule_name = N'Daily SampleDB',
       @freq_type = 4,
       @freq_interval = 1,
       @active_start_time = 233000;
    USE msdb;
    GO
    
  4. sp_attach_schedule を使用して、ジョブのスケジュールをジョブにアタッチします。

    -- Sets the 'Daily' schedule to the 'Daily SampleDB Backup' Job
    EXEC sp_attach_schedule
       @job_name = N'Daily SampleDB Backup',
       @schedule_name = N'Daily SampleDB';
    GO
    
  5. sp_add_jobserver を使用して、対象サーバーにジョブを割り当てます。 この例では、ターゲットはローカル サーバーです。

    EXEC dbo.sp_add_jobserver
       @job_name = N'Daily SampleDB Backup',
       @server_name = N'(local)';
    GO
    
  6. sp_start_job を使用してジョブを開始します。

    EXEC dbo.sp_start_job N' Daily SampleDB Backup' ;
    GO
    

SSMS でジョブを作成する

Windows 上で SQL Server Management Studio (SSMS) を使用して、ジョブをリモートで作成して管理することもできます。

  1. Windows 上で SSMS を起動し、Linux SQL Server インスタンスに接続します。 詳細については、「Windows で SQL Server Management Studio を使用して SQL Server on Linux を管理する」を参照してください。

  2. SampleDB という名前のサンプル データベースが作成されていることを確認します。

    Create a SampleDB database
  3. SQL Agent によって Linux 上への SQL Server エージェントのインストールと構成が正しく行われていることを確認します。 オブジェクト エクスプローラーで [SQL Server エージェント] の横にあるプラス記号を見つけます。 SQL Server エージェントが有効になっていない場合は、Linux 上で mssql-server サービスを再起動してみてください。

    Screenshot showing how to verify SQL Server Agent was installed.

  4. 新しいジョブを作成します。

    Screenshot showing how to create a new job.

  5. ジョブの名前を指定し、ジョブ ステップを作成します。

    Screenshot showing how to create a job step.

  6. 使用するサブシステムとジョブ ステップで実行する操作を指定します。

    Screenshot showing job subsystem.

    Screenshot showing job step action.

  7. 新しいジョブ スケジュールを作成します。

    Screenshot of the New Job dialog box with the Schedules option highlighted and the New option called out.

    Screenshot of the New Job dialog box with the OK option called out.

  8. ジョブを開始します。

    Screenshot showing how to Start the SQL Server Agent job.

次のステップ

このチュートリアルでは、以下の内容を学習しました。

  • Linux 上に SQL Server エージェントをインストールする
  • Transact-SQL とシステム ストアド プロシージャを使用してジョブを作成する
  • データベース バックアップを毎日実行するジョブを作成する
  • SSMS UI を使用してジョブの作成と管理を行う

次に、ジョブの作成と管理に関するその他の機能を確認してください。