次の方法で共有


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

対象:Linux 上の SQL Server

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

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

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

前提条件

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

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

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
    

SQL Server 2017 (14.x) CU 4 以降では、SQL Server エージェントは mssql-server パッケージに含まれており、既定では無効になっています。 CU 4 より前のエージェントのセットアップについては、「 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 では、sqlcmd と bcp SQL Server コマンドラインツールをインストールするか、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
    
    EXECUTE dbo.sp_add_job @job_name = N'Daily SampleDB Backup';
    GO
    
  2. sp_add_jobstep を呼び出して、SampleDB データベースのバックアップを作成するジョブ ステップを作成します。

    EXECUTE 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'
    EXECUTE 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
    EXECUTE sp_attach_schedule
        @job_name = N'Daily SampleDB Backup',
        @schedule_name = N'Daily SampleDB';
    GO
    
  5. sp_add_jobserver を使用して、対象サーバーにジョブを割り当てます。 この例では、ターゲットはローカル サーバーです。

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

    EXECUTE 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 という名前のサンプル データベースが作成されていることを確認します。

    SampleDB データベースの作成のスクリーンショット。

  3. SQL エージェントが Install SQL Server エージェント on Linux 正しく構成されていることを確認します。 オブジェクト エクスプローラーでSQL Server エージェントの横にあるプラス記号を探します。 SQL Server エージェントが有効になっていない場合は、Linux で mssql-server サービスを再起動してみてください。

    SQL Server エージェントがインストールされたことを確認する方法を示すスクリーンショット。

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

    新しいジョブを作成する方法を示すスクリーンショット。

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

    ジョブ ステップを作成する方法を示すスクリーンショット。

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

    SSMS の [新しいジョブ] ダイアログ ボックスのスクリーンショット。ジョブ ステップを作成するために [新規] ボタンが強調表示された [ステップ] ページが表示されています。

    [OK] ボタンが強調表示された SampleDB の T-SQL BACKUP DATABASE コマンドを示す [新しいジョブ ステップ] ダイアログ ボックスのスクリーンショット。

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

    [スケジュール] オプションと [新規] オプションが選択された [新しいジョブ] ダイアログ ボックスのスクリーンショット。

    [OK] オプションが選択された [新しいジョブ] ダイアログ ボックスのスクリーンショット。

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

    SQL Server エージェント ジョブを開始する方法を示すスクリーンショット

次のステップ

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

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

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