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: 既知の問題」を参照してください。
前提条件
このチュートリアルを完了するには、次の前提条件を満たす必要があります。
次の前提条件を満たしている Linux コンピューター:
- Quickstart: Red Hat Enterprise Linux にSQL Serverをインストールしてデータベースを作成します
- Quickstart: SQL Serverをインストールし、SUSE Linux Enterprise Server にデータベースを作成します
- Quickstart: SQL Serverをインストールし、コマンド ライン ツールを使用して Ubuntu にデータベースを作成します。
注
SQL Server 2025 (17.x) 以降、SUSE Linux Enterprise Server (SLES) はサポートされていません。
次の前提条件には対応しなくてもかまいません。
- WindowsマシンでSSMSを使用する:
- オプションの SSMS 手順にSQL Server Management Studioをインストールします。
SQL Server エージェントを有効にする
Linux でSQL Server エージェントを使用するには、まず、既にSQL ServerインストールされているコンピューターでSQL Server エージェントを有効にする必要があります。
SQL Server エージェントを有効にするには、次のコマンドを実行します。
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true次のコマンドを使用してSQL Serverを再起動します。
sudo systemctl restart mssql-server
注
SQL Server 2017 (14.x) CU 4 以降では、SQL Server エージェントは mssql-server パッケージに含まれており、既定では無効になっています。 CU 4 より前のエージェントのセットアップについては、「 Linux でのSQL Server エージェントのインストールを参照してください。
サンプル データベースの作成
次の手順に従って、SampleDB という名前のサンプル データベースを作成します。 このデータベースは、毎日のバックアップ ジョブを実行するために使用されます。
Linux コンピューター上で、bash ターミナル セッションを開きます。
sqlcmd を使用して、Transact-SQL
CREATE DATABASEコマンドを実行します。/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -Q 'CREATE DATABASE SampleDB'サーバー上のデータベースを一覧表示して、データベースが作成されていることを確認します。
/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 インターフェイスを使用したりすることもできます。これは、次のセクションで説明します。
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'; GOsp_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次に、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; GOsp_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'; GOsp_add_jobserver を使用して、対象サーバーにジョブを割り当てます。 この例では、ターゲットはローカル サーバーです。
EXECUTE dbo.sp_add_jobserver @job_name = N'Daily SampleDB Backup', @server_name = N'(local)'; GOsp_start_job を使用してジョブを開始します。
EXECUTE dbo.sp_start_job N' Daily SampleDB Backup'; GO
SSMS でジョブを作成する
Windowsで SQL Server Management Studio (SSMS) を使用して、リモートでジョブを作成および管理することもできます。
Windowsで SSMS を起動し、Linux SQL Server インスタンスに接続します。 詳細については、「
Windows でSQL Server Management Studioを使用してSQL Server on Linux を参照してください。SampleDBという名前のサンプル データベースが作成されていることを確認します。SQL エージェントが Install SQL Server エージェント on Linux 正しく構成されていることを確認します。 オブジェクト エクスプローラーでSQL Server エージェントの横にあるプラス記号を探します。 SQL Server エージェントが有効になっていない場合は、Linux で mssql-server サービスを再起動してみてください。
新しいジョブを作成します。
ジョブの名前を指定し、ジョブ ステップを作成します。
使用するサブシステムとジョブ ステップで実行する操作を指定します。
新しいジョブ スケジュールを作成します。
ジョブを開始します。
SQL Server エージェント ジョブを開始する方法を示すスクリーンショット
次のステップ
このチュートリアルでは、以下の内容を学習しました。
- Linux にSQL Server エージェントをインストールする
- Transact-SQLおよびシステム ストアド プロシージャを使用してジョブを作成する
- データベース バックアップを毎日実行するジョブを作成する
- SSMS UI を使用してジョブの作成と管理を行う
次に、ジョブの作成と管理に関するその他の機能を確認してください。