sp_add_job (Transact-SQL)

適用対象: SQL Server Azure 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_namenvarchar(128) で、既定値はありません。 必須。

@enabled

追加されたジョブの状態を示します。 enabledtinyint で、既定値は 1 (有効) です。 0場合、ジョブは有効ではなく、スケジュールに従って実行されません。ただし、手動で実行できます。

@description

ジョブの説明。 @descriptionnvarchar(512) で、既定値は NULL です。 @descriptionを省略すると、N'No description available'が使用されます。

@start_step_id

ジョブで実行する最初のステップの ID 番号を指定します。 @start_step_idint で、既定値は 1 です。

@category_name

ジョブのカテゴリを指定します。 @category_namesysname で、既定値は NULL です。

@category_id

ジョブ カテゴリを指定するための、言語に依存しないメカニズムを指定します。 @category_idint で、既定値は NULL です。

@owner_login_name

ジョブを所有するログインの名前。 @owner_login_namesysname で、既定値は NULL で、現在のログイン名として解釈されます。 sysadmin固定サーバー ロールのメンバーのみが、@owner_login_nameの値を設定または変更できます。 sysadminロールのメンバーではないユーザーが@owner_login_nameの値を設定または変更すると、このストアド プロシージャの実行が失敗し、エラーが返されます。

@notify_level_eventlog

対象となるジョブのエントリをいつ Microsoft Windows アプリケーション ログに記録するかを示す値を指定します。 @notify_level_eventlogint で、次のいずれかの値を指定できます。

Value 説明
0 Never (決してしない)
1 成功時
2 (既定) エラー時
3 常時

@notify_level_email

対象となるジョブの完了後、いつ電子メールを送信するかを示す値を指定します。 @notify_level_emailint であり、既定値は 0 であり、これは決してないことを示します。 @notify_level_email では、 @notify_level_eventlogと同じ値が使用されます。

@notify_level_netsend

対象となるジョブの完了後、いつネットワーク メッセージを送信するかを示す値を指定します。 @notify_level_netsendint で、既定値は 0 で、これは決してないことを示します。 @notify_level_netsend では、 @notify_level_eventlogと同じ値が使用されます。

@notify_level_page

対象となるジョブの完了後、いつポケットベルのメッセージを送信するかを示す値を指定します。 @notify_level_pageint で、既定値は 0 で、これは決してないことを示します。 @notify_level_page は、 @notify_level_eventlogと同じ値を使用します。

@notify_email_operator_name

@notify_email_operator_nameに達したときに電子メールを送信するユーザーの電子メール名。 @notify_email_operator_namesysname で、既定値は NULL です。

@notify_netsend_operator_name

このジョブの完了時にネットワーク メッセージが送信されるオペレーターの名前。 @notify_netsend_operator_namesysname で、既定値は NULL です。

@notify_page_operator_name

対象となるジョブの完了時にポケットベルのメッセージの送信先となる相手の名前を指定します。 @notify_page_operator_namesysname で、既定値は NULL です。

@delete_level

ジョブを削除するタイミングを示す値。 delete_valueint で、既定値は 0 です。これは決してないことを意味します。 @delete_level では、 @notify_level_eventlogと同じ値が使用されます。

Note

@delete_level3されると、ジョブに対して定義されているスケジュールに関係なく、ジョブは 1 回だけ実行されます。 また、ジョブが自分自身を削除した場合、そのジョブのすべての履歴も削除されます。

@job_id アウトプット

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

リターン コードの値

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

結果セット

ありません。

解説

@originating_serversp_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 エラスティック ジョブ)」を参照してください。

アクセス許可

このストアド プロシージャは、 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