sp_add_job (Transact-SQL)sp_add_job (Transact-SQL)

適用対象: yesSQL Server yesAzure SQL Database (Managed Instance のみ) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

SQL エージェントサービスによって実行される新しいジョブを追加します。Adds a new job executed by the SQL Agent service.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

重要

Azure SQL Database Managed Instance では現在、すべてではありませんがほとんどの SQL Server エージェントの機能がサポートされています。On Azure SQL Database Managed Instance, most, but not all SQL Server Agent features are currently supported. 詳細については、「Azure SQL Database Managed Instance と SQL Server の T-SQL の相違点」を参照してください。See Azure SQL Database Managed Instance T-SQL differences from SQL Server for details.

構文Syntax

  
sp_add_job [ @job_name = ] 'job_name'  
     [ , [ @enabled = ] enabled ]   
     [ , [ @description = ] '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 ]   

引数Arguments

ジョブの名前 [ @job_name = ] 'job_name' ます。[ @job_name = ] 'job_name' The name of the job. 名前は一意である必要があり、パーセント ( % ) 文字を含めることはできません。The name must be unique and cannot contain the percent (%) character. job_namenvarchar (128) ,、既定値はありません。job_nameis nvarchar(128), with no default.

[ @enabled = ] enabled は、追加されたジョブの状態を示します。[ @enabled = ] enabled Indicates the status of the added job. 有効になっているはtinyint,、既定値は 1 (有効) です。enabledis tinyint, with a default of 1 (enabled). 0の場合、ジョブは無効になり、スケジュールに従って実行されません。ただし、手動で実行することもできます。If 0, the job is not enabled and does not run according to its schedule; however, it can be run manually.

ジョブの説明を [ @description = ] 'description' します。[ @description = ] 'description' The description of the job. 説明nvarchar (512) ,、既定値は NULL です。description is nvarchar(512), with a default of NULL. Descriptionを省略した場合、"説明はありません" が使用されます。If description is omitted, "No description available" is used.

ジョブに対して実行する最初のステップの識別番号を [ @start_step_id = ] step_id します。[ @start_step_id = ] step_id The identification number of the first step to execute for the job. step_idint,、既定値は1です。step_idis int, with a default of 1.

ジョブのカテゴリを [ @category_name = ] 'category' します。[ @category_name = ] 'category' The category for the job. categorysysname,、既定値は NULL です。categoryis sysname, with a default of NULL.

ジョブカテゴリを指定するための言語に依存しないメカニズムを [ @category_id = ] category_id します。[ @category_id = ] category_id A language-independent mechanism for specifying a job category. category_idint,、既定値は NULL です。category_idis int, with a default of NULL.

[ @owner_login_name = ] 'login'、ジョブを所有するログインの名前を指定します。[ @owner_login_name = ] 'login' The name of the login that owns the job. loginsysnameで、既定値は NULL です。これは現在のログイン名として解釈されます。loginis sysname, with a default of NULL, which is interpreted as the current login name. @owner_login_nameの値を設定または変更できるのは、 sysadmin固定サーバーロールのメンバーだけです。Only members of the sysadmin fixed server role can set or change the value for @owner_login_name. Sysadminロールのメンバーでないユーザーが @owner_login_nameの値を設定または変更した場合、このストアドプロシージャの実行は失敗し、エラーが返されます。If users who are not members of the sysadmin role set or change the value of @owner_login_name, execution of this stored procedure fails and an error is returned.

このジョブの Microsoft Windows アプリケーションログにエントリを配置するタイミングを示す値を [ @notify_level_eventlog = ] eventlog_level します。[ @notify_level_eventlog = ] eventlog_level A value indicating when to place an entry in the Microsoft Windows application log for this job. eventlog_levelint,、これらの値のいずれかを指定できます。eventlog_levelis int, and can be one of these values.

ReplTest1Value [説明]Description
00 NeverNever
11 成功時On success
2 (既定値)2 (default) 失敗時On failure
33 毎回Always

このジョブの完了時に電子メールを送信するタイミングを示す値を [ @notify_level_email = ] email_level します。[ @notify_level_email = ] email_level A value that indicates when to send an e-mail upon the completion of this job. email_levelint,、既定値は0,、しないことを示します。email_levelis int, with a default of 0, which indicates never. email_leveleventlog_levelと同じ値を使用します。email_leveluses the same values as eventlog_level.

このジョブの完了時にネットワークメッセージを送信するタイミングを示す値を [ @notify_level_netsend = ] netsend_level します。[ @notify_level_netsend = ] netsend_level A value that indicates when to send a network message upon the completion of this job. netsend_levelint,、既定値は0,、しないことを示します。netsend_levelis int, with a default of 0, which indicates never. netsend_leveleventlog_levelと同じ値を使用します。netsend_level uses the same values as eventlog_level.

このジョブの完了時にページを送信するタイミングを示す値を [ @notify_level_page = ] page_level します。[ @notify_level_page = ] page_level A value that indicates when to send a page upon the completion of this job. page_levelint,、既定値は0,、しないことを示します。page_levelis int, with a default of 0, which indicates never. page_leveleventlog_levelと同じ値を使用します。page_leveluses the same values as eventlog_level.

email_levelに達したときに電子メールを送信する相手の電子メール名を [ @notify_email_operator_name = ] 'email_name' します。[ @notify_email_operator_name = ] 'email_name' The e-mail name of the person to send e-mail to when email_level is reached. email_namesysname,、既定値は NULL です。email_name is sysname, with a default of NULL.

このジョブの完了時にネットワークメッセージを送信するオペレーターの名前を [ @notify_netsend_operator_name = ] 'netsend_name' します。[ @notify_netsend_operator_name = ] 'netsend_name' The name of the operator to whom the network message is sent upon completion of this job. netsend_namesysname,、既定値は NULL です。netsend_nameis sysname, with a default of NULL.

このジョブの完了時にページを [ @notify_page_operator_name = ] 'page_name' するユーザーの名前を指定します。[ @notify_page_operator_name = ] 'page_name' The name of the person to page upon completion of this job. page_namesysname,、既定値は NULL です。page_nameis sysname, with a default of NULL.

ジョブをいつ削除するかを示す値を [ @delete_level = ] delete_level します。[ @delete_level = ] delete_level A value that indicates when to delete the job. delete_valueint,、既定値は 0,、しないことを意味します。delete_valueis int, with a default of 0, which means never. delete_leveleventlog_levelと同じ値を使用します。delete_leveluses the same values as eventlog_level.

注意

Delete_level3の場合、ジョブに定義されているスケジュールに関係なく、ジョブは1回だけ実行されます。When delete_level is 3, the job is executed only once, regardless of any schedules defined for the job. また、ジョブが自分自身を削除した場合、そのジョブのすべての履歴も削除されます。Furthermore, if a job deletes itself, all history for the job is also deleted.

ジョブが正常に作成された場合は、ジョブに割り当てられているジョブ識別番号を [ @job_id = ] _job_idOUTPUT します。[ @job_id = ] _job_idOUTPUT The job identification number assigned to the job if created successfully. job_idは、 uniqueidentifier型の出力変数で、既定値は NULL です。job_idis an output variable of type uniqueidentifier, with a default of NULL.

リターン コードの値Return Code Values

0 (成功) または1 (失敗)0 (success) or 1 (failure)

結果セットResult Sets

[InclusionThresholdSetting]None

RemarksRemarks

@originating_serverは sp_add_job に存在しますが [引数] の下には表示されません。@originating_server exists in sp_add_job, but is not listed under Arguments. @originating_serverは、内部使用のために予約されています。@originating_server is reserved for internal use.

Sp_add_jobを実行してジョブを追加した後、 sp_add_jobstepを使用して、ジョブのアクティビティを実行するステップを追加できます。After sp_add_job has been executed to add a job, sp_add_jobstep can be used to add steps that perform the activities for the job. sp_add_jobscheduleを使用すると、SQL ServerSQL Server エージェントサービスがジョブを実行するために使用するスケジュールを作成できます。sp_add_jobschedule can be used to create the schedule that the SQL ServerSQL Server Agent service uses to execute the job. Sp_add_jobserverを使用して、ジョブを実行する SQL ServerSQL Server インスタンスを設定し、 sp_delete_jobserver SQL ServerSQL Server インスタンスからジョブを削除します。Use sp_add_jobserver to set the SQL ServerSQL Server instance where the job executes, and sp_delete_jobserver to remove the job from the SQL ServerSQL Server instance.

マルチサーバー環境の1つ以上の対象サーバーでジョブを実行する場合は、 sp_apply_job_to_targetsを使用して、ジョブの対象サーバーまたは対象サーバーグループを設定します。If the job will execute on one or more target servers in a multiserver environment, use sp_apply_job_to_targets to set the target servers or target server groups for the job. 対象サーバーまたは対象サーバーグループからジョブを削除するには、 sp_remove_job_from_targetsを使用します。To remove jobs from target servers or target server groups, use sp_remove_job_from_targets.

SQL Server Management StudioSQL Server Management Studio は、ジョブを簡単に管理できるグラフィカルなツールです。ジョブのインフラストラクチャを作成し、管理するには、このツールを使用することをお勧めします。provides an easy, graphical way to manage jobs, and is the recommended way to create and manage the job infrastructure.

アクセス許可Permissions

このストアドプロシージャを実行するには、 sysadmin固定サーバーロールのメンバーであるか、 msdbデータベースに格納されている次の SQL ServerSQL Server エージェント固定データベースロールのいずれかが付与されている必要があります。To run this stored procedure, users must be a member of the sysadmin fixed server role, or be granted one of the following SQL ServerSQL Server Agent fixed database roles, which reside in the msdb database:

  • SQLAgentUserRoleSQLAgentUserRole

  • SQLAgentReaderRoleSQLAgentReaderRole

  • SQLAgentOperatorRoleSQLAgentOperatorRole

これらの固定データベースロールに関連付けられている特定の権限の詳細については、「 SQL Server エージェント固定データベースロール」を参照してください。For information about the specific permissions that are associated with each of these fixed database roles, see SQL Server Agent Fixed Database Roles.

@owner_login_nameの値を設定または変更できるのは、 sysadmin固定サーバーロールのメンバーだけです。Only members of the sysadmin fixed server role can set or change the value for @owner_login_name. Sysadminロールのメンバーでないユーザーが @owner_login_nameの値を設定または変更した場合、このストアドプロシージャの実行は失敗し、エラーが返されます。If users who are not members of the sysadmin role set or change the value of @owner_login_name, execution of this stored procedure fails and an error is returned.

使用例Examples

A.A. ジョブの追加Adding a job

この例では、NightlyBackupsという名前の新しいジョブを追加します。This example adds a new job named NightlyBackups.

USE msdb ;  
GO  
  
EXEC dbo.sp_add_job  
    @job_name = N'NightlyBackups' ;  
GO  

b.B. ポケットベル、電子メール、および net send の情報を含むジョブの追加Adding a job with pager, e-mail, and net send information

この例では、ジョブが失敗した場合に François Ajenstat (ポケットベル、電子メール、またはネットワークのポップアップメッセージ) を通知する Ad hoc Sales Data Backup という名前のジョブを作成し、正常に完了したときにジョブを削除します。This example creates a job named Ad hoc Sales Data Backup that notifies François Ajenstat (by pager, e-mail, or network pop-up message) if the job fails, and deletes the job upon successful completion.

注意

この例では、François Ajenstat という名前のオペレーターと françoisa という名前のログインが既に存在することを前提としています。This example assumes that an operator named François Ajenstat and a login named françoisa already exist.

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  

参照See Also

transact-sql ( の) sp_add_schedulesp_add_schedule (Transact-SQL)
transact-sql ( の) sp_add_jobstepsp_add_jobstep (Transact-SQL)
transact-sql ( の) sp_add_jobserversp_add_jobserver (Transact-SQL)
transact-sql ( の) sp_apply_job_to_targetssp_apply_job_to_targets (Transact-SQL)
transact-sql ( の) sp_delete_jobsp_delete_job (Transact-SQL)
transact-sql ( の) sp_delete_jobserversp_delete_jobserver (Transact-SQL)
transact-sql ( の) sp_remove_job_from_targetssp_remove_job_from_targets (Transact-SQL)
transact-sql ( の) sp_help_jobsp_help_job (Transact-SQL)
transact-sql ( の) sp_help_jobstepsp_help_jobstep (Transact-SQL)
transact-sql ( の) sp_update_jobsp_update_job (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)System Stored Procedures (Transact-SQL)