sp_add_job (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

SQL Server エージェント サービスによって実行される新しいジョブを作成します。

Transact-SQL 構文表記規則

重要

現在、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

追加されたジョブの状態を示します。 enabledtinyint で、既定値は 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ログイン名として解釈されます。 @owner_login_nameの値を設定または変更できるのは、sysadmin 固定サーバー ロールのメンバーだけです。 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_level3場合、ジョブに対して定義されているスケジュールに関係なく、ジョブは 1 回だけ実行されます。 また、ジョブが自分自身を削除した場合、そのジョブのすべての履歴も削除されます。

@job_id 出力

正常に作成された場合にジョブに割り当てられるジョブ識別番号。 @job_idは uniqueidentifierの出力変数で、既定値は NULL.

リターン コードの値

0 (成功) または 1 (失敗)。

結果セット

ありません。

解説

@originating_serverは 、にsp_add_job存在しますが、引数の下には表示されません。 @originating_serverは内部使用のために予約されています。

ジョブを追加するために実行された後 sp_add_jobsp_add_jobstep ジョブのアクティビティを実行するステップを追加するために使用できます。 sp_add_jobscheduleを使用して、SQL Server エージェント サービスがジョブの実行に使用するスケジュールを作成できます。

ジョブが実行される SQL Server インスタンスを設定しsp_delete_jobserver、SQL Server インスタンスからジョブを削除するために使用sp_add_jobserverします。 ジョブがマルチサーバー環境の 1 つ以上のターゲット サーバーで実行される場合は、ジョブのターゲット サーバーまたはターゲット サーバー グループを設定するために使用 sp_apply_job_to_targets します。 ターゲット サーバーまたはターゲット サーバー グループからジョブを削除するには、次を使用 sp_remove_job_from_targetsします。 マルチサーバー 管理istration (MSX/TSX) 機能は、Azure SQL Managed Instance ではサポートされていません。

SQL Server Management Studio は、簡単かつ直観的な方法でジョブを管理するためのツールで、ジョブ体系の作成および管理に最適です。

このストアド プロシージャは、Azure SQL Database の sp_add_job Azure Elastic Jobs サービスの同様の オブジェクトと名前を共有します。 エラスティック ジョブのバージョンについては、「jobs.sp_add_job (Azure エラスティック ジョブ) (Transact-SQL)」を参照してください

アクセス許可

このストアド プロシージャは、db_owner ロールによって所有されています。 任意のユーザーにアクセス許可を付与 EXECUTE できますが、SQL Server のアップグレード中にこれらのアクセス許可がオーバーライドされる可能性があります。

他のユーザーには、データベース内の固定データベース ロールSQL Server エージェント次のいずれかを付与するmsdb必要があります。

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

これらのロールの権限の詳細については、「 SQL Server エージェントの固定データベース ロール」を参照してください。

@owner_login_nameの値を設定または変更できるのは、sysadmin 固定サーバー ロールのメンバーだけです。 sysadmin ロールのメンバーではないユーザーが@owner_login_name値を設定または変更した場合、このストアド プロシージャの実行は失敗し、エラーが返されます。

A. ジョブを追加する

この例では、という名前 NightlyBackupsの新しいジョブを追加します。

USE msdb;
GO

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

B. ポケットベル、電子メール、およびネット送信情報を含むジョブを追加する

この例では、ジョブが失敗した場合に (ポケットベル、電子メール、またはネットワーク ポップアップ メッセージによって) 通知François Ajenstatし、正常に完了したときにジョブを削除する名前Ad hoc Sales Data Backupのジョブを作成します。

Note

この例では、名前付きの演算子と名前付きのFrançois Ajenstatfranç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