適用対象: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 のリリース ノート」を参照してください。
前提条件
このチュートリアルを完了するには、次の前提条件を満たす必要があります。
次の前提条件を満たしている Linux コンピューター:
次の前提条件には対応しなくてもかまいません。
- SSMS を備えた Windows マシン:
- オプションの SSMS 手順を実行するための SQL Server Management Studio (SSMS) をダウンロードする。
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
パッケージに含まれており、既定では無効になっています。 CU4 より前のバージョンでエージェントを設定するには、「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 では、Visual Studio Code 用の Linux または SQL Server 拡張機能に sqlcmd および bcp 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'; GO
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
次に、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
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
sp_add_jobserver を使用して、対象サーバーにジョブを割り当てます。 この例では、ターゲットはローカル サーバーです。
EXECUTE dbo.sp_add_jobserver @job_name = N'Daily SampleDB Backup', @server_name = N'(local)'; GO
sp_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 Agent によって Linux 上への SQL Server エージェントのインストールと構成が正しく行われていることを確認します。 オブジェクト エクスプローラーで [SQL Server エージェント] の横にあるプラス記号を見つけます。 SQL Server エージェントが有効になっていない場合は、Linux 上で mssql-server サービスを再起動してみてください。
新しいジョブを作成します。
ジョブの名前を指定し、ジョブ ステップを作成します。
使用するサブシステムとジョブ ステップで実行する操作を指定します。
新しいジョブ スケジュールを作成します。
ジョブを開始します。
次のステップ
このチュートリアルでは、以下の内容を学習しました。
- Linux 上に SQL Server エージェントをインストールする
- Transact-SQL とシステム ストアド プロシージャを使用してジョブを作成する
- データベース バックアップを毎日実行するジョブを作成する
- SSMS UI を使用してジョブの作成と管理を行う
次に、ジョブの作成と管理に関するその他の機能を確認してください。