sp_add_job (Transact-SQL)
適用対象: SQL Server
Azure SQL Managed Instance
SQL Server エージェント サービスによって実行される新しいジョブを作成します。
重要
現在、Azure SQL Managed Instance によって、すべてではありませんが、ほとんどの SQL Server エージェントの機能がサポートされています。 詳細については、Azure SQL Managed Instance と SQL Server の T-SQL の相違点に関するページを参照してください。
構文
sp_add_job
[ @job_name = ] N'job_name'
[ , [ @enabled = ] enabled ]
[ , [ @description = ] N'description' ]
[ , [ @start_step_id = ] step_id ]
[ , [ @category_name = ] 'category' ]
[ , [ @category_id = ] category_id ]
[ , [ @owner_login_name = ] 'login' ]
[ , [ @notify_level_eventlog = ] eventlog_level ]
[ , [ @notify_level_email = ] email_level ]
[ , [ @notify_level_netsend = ] netsend_level ]
[ , [ @notify_level_page = ] page_level ]
[ , [ @notify_email_operator_name = ] 'email_name' ]
[ , [ @notify_netsend_operator_name = ] 'netsend_name' ]
[ , [ @notify_page_operator_name = ] 'page_name' ]
[ , [ @delete_level = ] delete_level ]
[ , [ @job_id = ] job_id OUTPUT ]
[ ; ]
引数
@job_name
ジョブの名前。 名前は一意である必要があり、パーセント (%
) 文字を含めることはできません。 @job_name は nvarchar(128) で、既定値はありません。 必須。
@enabled
追加されたジョブの状態を示します。 enabled は tinyint で、既定値は 1
(有効) です。 0
場合、ジョブは有効ではなく、スケジュールに従って実行されません。ただし、手動で実行できます。
@description
ジョブの説明。 @description は nvarchar(512) で、既定値は NULL
です。 @descriptionを省略すると、N'No description available'
が使用されます。
@start_step_id
ジョブで実行する最初のステップの ID 番号を指定します。 @start_step_id は int で、既定値は 1
です。
@category_name
ジョブのカテゴリを指定します。 @category_name は sysname で、既定値は NULL
です。
@category_id
ジョブ カテゴリを指定するための、言語に依存しないメカニズムを指定します。 @category_id は int で、既定値は NULL
です。
@owner_login_name
ジョブを所有するログインの名前。 @owner_login_name は sysname で、既定値は NULL
で、現在のログイン名として解釈されます。 sysadmin固定サーバー ロールのメンバーのみが、@owner_login_nameの値を設定または変更できます。 sysadminロールのメンバーではないユーザーが@owner_login_nameの値を設定または変更すると、このストアド プロシージャの実行が失敗し、エラーが返されます。
@notify_level_eventlog
対象となるジョブのエントリをいつ Microsoft Windows アプリケーション ログに記録するかを示す値を指定します。 @notify_level_eventlog は int で、次のいずれかの値を指定できます。
Value | 説明 |
---|---|
0 |
Never (決してしない) |
1 |
成功時 |
2 (既定) |
エラー時 |
3 |
常時 |
@notify_level_email
対象となるジョブの完了後、いつ電子メールを送信するかを示す値を指定します。 @notify_level_email は int であり、既定値は 0
であり、これは決してないことを示します。 @notify_level_email では、 @notify_level_eventlogと同じ値が使用されます。
@notify_level_netsend
対象となるジョブの完了後、いつネットワーク メッセージを送信するかを示す値を指定します。 @notify_level_netsend は int で、既定値は 0
で、これは決してないことを示します。 @notify_level_netsend では、 @notify_level_eventlogと同じ値が使用されます。
@notify_level_page
対象となるジョブの完了後、いつポケットベルのメッセージを送信するかを示す値を指定します。 @notify_level_page は int で、既定値は 0
で、これは決してないことを示します。 @notify_level_page は、 @notify_level_eventlogと同じ値を使用します。
@notify_email_operator_name
@notify_email_operator_nameに達したときに電子メールを送信するユーザーの電子メール名。 @notify_email_operator_name は sysname で、既定値は NULL
です。
@notify_netsend_operator_name
このジョブの完了時にネットワーク メッセージが送信されるオペレーターの名前。 @notify_netsend_operator_name は sysname で、既定値は NULL
です。
@notify_page_operator_name
対象となるジョブの完了時にポケットベルのメッセージの送信先となる相手の名前を指定します。 @notify_page_operator_name は sysname で、既定値は NULL
です。
@delete_level
ジョブを削除するタイミングを示す値。 delete_value は int で、既定値は 0
です。これは決してないことを意味します。 @delete_level では、 @notify_level_eventlogと同じ値が使用されます。
Note
@delete_levelが3
されると、ジョブに対して定義されているスケジュールに関係なく、ジョブは 1 回だけ実行されます。 また、ジョブが自分自身を削除した場合、そのジョブのすべての履歴も削除されます。
@job_id アウトプット
正常に作成された場合にジョブに割り当てられるジョブ識別番号。 @job_idは、NULL
の既定値uniqueidentifier型の出力変数です。
リターン コードの値
0
(成功) または 1
(失敗)。
結果セット
ありません。
解説
@originating_server は sp_add_job
に存在しますが、引数の下には表示されません。 @originating_server は内部使用のために予約されています。
sp_add_job
を実行してジョブを追加した後、sp_add_jobstep
を使用して、ジョブのアクティビティを実行するステップを追加できます。 sp_add_jobschedule
を使用して、SQL Server エージェント サービスがジョブの実行に使用するスケジュールを作成できます。
sp_add_jobserver
を使用してジョブを実行する SQL Server インスタンスを設定し、SQL Server インスタンスからジョブを削除するsp_delete_jobserver
します。 ジョブがマルチサーバー環境の 1 つ以上のターゲット サーバーで実行される場合は、 sp_apply_job_to_targets
を使用して、ジョブのターゲット サーバーまたはターゲット サーバー グループを設定します。 ターゲット サーバーまたはターゲット サーバー グループからジョブを削除するには、 sp_remove_job_from_targets
を使用します。 Multi Server Administration (MSX/TSX) 機能は、Azure SQL Managed Instance ではサポートされていません。
SQL Server Management Studio は、簡単かつ直観的な方法でジョブを管理するためのツールで、ジョブ体系の作成および管理に最適です。
このストアド プロシージャは、azure SQL Database 用の Azure Elastic Jobs サービスの同様のオブジェクトとsp_add_job
の名前を共有。 エラスティック ジョブのバージョンについては、「 jobs.sp_add_job (Azure エラスティック ジョブ) (Transact-SQL)」を参照してください。
アクセス許可
このストアド プロシージャは、 db_owner ロールによって所有されています。 EXECUTE
アクセス許可は任意のユーザーに付与できますが、SQL Server のアップグレード中にこれらのアクセス許可がオーバーライドされる可能性があります。
他のユーザーには、msdb
データベース内の次SQL Server エージェント固定データベース ロールのいずれかを付与する必要があります。
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
これらのロールの権限の詳細については、「 SQL Server エージェントの固定データベース ロール」を参照してください。
sysadmin固定サーバー ロールのメンバーのみが、@owner_login_nameの値を設定または変更できます。 sysadminロールのメンバーではないユーザーが@owner_login_nameの値を設定または変更すると、このストアド プロシージャの実行が失敗し、エラーが返されます。
例
A. ジョブを追加する
次の使用例は、 NightlyBackups
という名前の新しいジョブを追加します。
USE msdb;
GO
EXEC dbo.sp_add_job @job_name = N'NightlyBackups';
GO
B. ポケットベル、電子メール、およびネット送信情報を含むジョブを追加する
この例では、 Ad hoc Sales Data Backup
という名前のジョブを作成し、ジョブが失敗した場合に (ポケットベル、電子メール、またはネットワーク ポップアップ メッセージによって) François Ajenstat
に通知し、正常に完了するとジョブを削除します。
Note
この例では、 François Ajenstat
という名前の演算子と、 françoisa
という名前のログインが既に存在することを前提としています。
USE msdb;
GO
EXEC dbo.sp_add_job
@job_name = N'Ad hoc Sales Data Backup',
@enabled = 1,
@description = N'Ad hoc backup of sales data',
@owner_login_name = N'françoisa',
@notify_level_eventlog = 2,
@notify_level_email = 2,
@notify_level_netsend = 2,
@notify_level_page = 2,
@notify_email_operator_name = N'François Ajenstat',
@notify_netsend_operator_name = N'François Ajenstat',
@notify_page_operator_name = N'François Ajenstat',
@delete_level = 1;
GO
関連するコンテンツ
- sp_add_schedule (Transact-SQL)
- sp_add_jobstep (Transact-SQL)
- sp_add_jobserver (Transact-SQL)
- sp_apply_job_to_targets (Transact-SQL)
- sp_delete_job (Transact-SQL)
- sp_delete_jobserver (Transact-SQL)
- sp_remove_job_from_targets (Transact-SQL)
- sp_help_job (Transact-SQL)
- sp_help_jobstep (Transact-SQL)
- sp_update_job (Transact-SQL)