SQL Serverエージェントは、スケジュールされた管理タスクを実行するMicrosoft Windowsサービスであり、ジョブと呼ばれます。 SQLServerで。
T-SQLには、SQLServerエージェントジョブを処理するストアドプロシージャの大規模なコレクションが含まれています。
ここでは、それらのいくつかを使用して、SQLServerエージェントジョブを作成およびスケジュールします。
必要に応じて、GUI(SSMS内)を介してSQLServerエージェントジョブを作成することもできます。
エージェントXPを有効にする
SQLServerインスタンスでSQLServerエージェントジョブを作成するのが初めての場合は、SQL Serverエージェント拡張ストアドプロシージャ(エージェントXP)を有効にする必要があります。
T-SQLを使用して実行する方法と、SSMSGUIを使用して実行する方法を次に示します。
それが完了したら、次のようなSQLServerエージェントジョブを続行して作成できます。
例
これは、SQLServerエージェントジョブの作成とスケジュールに使用されるコードの例です。
USE msdb;
GO
EXEC sp_add_job
@job_name = N'BackupPetHotelDB' ;
GO
EXEC sp_add_jobstep
@job_name = N'BackupPetHotelDB',
@step_name = N'Run the backup',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [PetHotel] TO DISK = N''C:\Backups\PetHotel.bak'' WITH CHECKSUM',
@retry_attempts = 5,
@retry_interval = 5;
GO
EXEC sp_add_schedule
@schedule_name = N'RunDailyAM',
@freq_type = 4,
@freq_interval = 4,
@active_start_time = 041000;
GO
EXEC sp_attach_schedule
@job_name = N'BackupPetHotelDB',
@schedule_name = N'RunDailyAM';
GO
EXEC sp_add_jobserver
@job_name = N'BackupPetHotelDB';
GO
ここでは、ジョブを作成してスケジュールするために5つのストアドプロシージャを使用します。これらの手順のほとんどは、この例で使用したものよりもはるかに多くの(オプションの)引数を受け入れます。各プロシージャで使用できる引数の完全なリストについては、以下の表のリンクを参照してください。
これらのストアドプロシージャはmsdb
にあります データベースを作成すると、 msdbが設定されていることがわかります。 それらを実行する前の現在のデータベースとして。または、データベース名で修飾することもできます(例:msdb.dbo.sp_add_job...
、など)
次の表に、各手順の概要を示します。
ストアドプロシージャ | 説明 |
---|---|
sp_add_job | SQLAgentサービスによって実行される新しいジョブを追加します。 詳細については、MicrosoftのWebサイトを参照してください。 |
sp_add_jobstep | sp_add_job で追加されたジョブの実際の操作を実行するステップを追加します 。 上記の例では、データベースをバックアップするステップを追加しています。 T-SQLコマンドを提供することを指定します。 @retry_interval 分単位です。 詳細については、MicrosoftのWebサイトを参照してください。 |
sp_add_schedule | 任意の数のジョブで使用できるスケジュールを作成します。 この場合、 @freq_type を指定しました 4 の値 これは毎日です。 @freq_interval も提供しました 4 の値 、これも毎日です。 時間は24時間制に基づいており、HHMMSSの形式で入力されます。この例では、 041000 を使用しています 、04:10:00です。 頻度を設定するときに使用できるさまざまなオプションについては、以下のMicrosoftリンクを参照してください。 詳細については、MicrosoftのWebサイトを参照してください。 |
sp_attach_schedule | ジョブのスケジュールを設定します。ここでは、追加したスケジュールをsp_add_schedule で添付します sp_add_job で追加したジョブに 。 スケジュールとジョブの所有者は同じである必要があることに注意してください。 また、スケジュールを複数のジョブに設定したり、ジョブを複数のスケジュールで実行したりすることもできます。 詳細については、MicrosoftのWebサイトを参照してください。 |
sp_add_jobserver | 指定されたサーバーで指定されたジョブを対象とします。これは@server_name も受け入れます サーバーを指定する引数。 デフォルト値は (LOCAL) です。 ローカルマシン用。この例では、ローカルマシンを使用したため、この引数を省略できました。 詳細については、MicrosoftのWebサイトを参照してください。 |
ジョブを表示
sp_help_job
を使用できます msdbのストアドプロシージャ サーバー上に作成されたSQLServerエージェントジョブを表示するデータベース。
EXEC sp_help_job;
テストマシンでの表示は次のとおりです。
この場合、3つのジョブがあります。
SQLServerエージェント>ジョブがある場合は、オブジェクトエクスプローラーでジョブを確認することもできます。 ノードが拡張されました。
sp_help_job
ストアドプロシージャを使用すると、ジョブの名前またはIDを指定して、そのジョブに関するより詳細な情報を取得できます。
例:
EXEC sp_help_job @job_name= 'BackupPetHotelDB';
結果:
結果は、コアジョブの詳細、ジョブステップ、ジョブスケジュール、およびジョブターゲットサーバーに分けられます。これは、ジョブの作成時に実行したストアドプロシージャをほぼ反映しています。
sp_help_job
については、Microsoftのドキュメントを参照してください。 詳細、および提供できるその他の引数のリストについては、
ジョブをテストする
sp_start_job
を使用できます ジョブが実行されることをテストするためのストアドプロシージャ。このプロシージャはジョブ名またはIDを受け入れ、プロシージャを実行するとすぐにジョブを実行します。
例については、T-SQLを使用してSQLServerエージェントジョブを実行する方法を参照してください。