sp_add_schedule (Transact-SQL)

任意の数のジョブで使用できるスケジュールを作成します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

        sp_add_schedule [ @schedule_name = ] 'schedule_name' 
    [ , [ @enabled = ] enabled ]
    [ , [ @freq_type = ] freq_type ]
    [ , [ @freq_interval = ] freq_interval ] 
    [ , [ @freq_subday_type = ] freq_subday_type ] 
    [ , [ @freq_subday_interval = ] freq_subday_interval ] 
    [ , [ @freq_relative_interval = ] freq_relative_interval ] 
    [ , [ @freq_recurrence_factor = ] freq_recurrence_factor ] 
    [ , [ @active_start_date = ] active_start_date ] 
    [ , [ @active_end_date = ] active_end_date ] 
    [ , [ @active_start_time = ] active_start_time ] 
    [ , [ @active_end_time = ] active_end_time ] 
    [ , [ @owner_login_name = ] 'owner_login_name' ]
    [ , [ @schedule_uid = ] schedule_uid OUTPUT ]
    [ , [ @schedule_id = ] schedule_id OUTPUT ]
    [ , [ @originating_server = ] server_name ] /* internal */

引数

  • [ @schedule_name = ] 'schedule_name'
    スケジュールの名前を指定します。schedule_name のデータ型は sysname で、既定値はありません。

  • [ @enabled = ] enabled
    スケジュールの現在の状態を指定します。enabled のデータ型は tinyint で、既定値は 1 (有効) です。0 を指定した場合、スケジュールは無効になります。スケジュールが無効な場合、このスケジュールでジョブは実行されません。

  • [ @freq_type = ] freq_type
    いつジョブを実行するかを示す値を指定します。freq_type のデータ型は int で、既定値は 0 です。次のいずれかの値を指定できます。

    説明

    1

    1 回

    4

    毎日

    8

    毎週

    16

    毎月

    32

    freq_interval を基準とした月単位

    64

    SQL Server エージェント サービスの起動時に実行

    128

    コンピューターがアイドル状態のときに実行

  • [ @freq_interval = ] freq_interval
    ジョブを実行する日を指定します。freq_interval のデータ型は int で、既定値は 1 です。この値は、freq_type の値に応じて異なります。

    freq_type の値

    freq_interval への影響

    1 (1 回のみ)

    freq_interval は使用されません。

    4 (毎日)

    freq_interval に指定した日数ごとに実行。

    8 (毎週)

    freq_interval には、次の値を 1 つ以上指定できます (OR 論理演算子で結合します)。

    1 = 日曜日

    2 = 月曜日

    4 = 火曜日

    8 = 水曜日

    16 = 木曜日

    32 = 金曜日

    64 = 土曜日

    16 (毎月)

    毎月の freq_interval で指定した日に実行。

    32 (月単位)

    freq_interval には、次のいずれかの値を指定できます。

    1 = 日曜日

    2 = 月曜日

    3 = 火曜日

    4 = 水曜日

    5 = 木曜日

    6 = 金曜日

    7 = 土曜日

    8 = 毎日

    9 = 平日

    10 = 土日

    64 (SQLServerAgent サービスの起動時)

    freq_interval は使用されません。

    128

    freq_interval は使用されません。

  • [ @freq_subday_type = ] freq_subday_type
    freq_subday_interval の単位を指定します。freq_subday_type のデータ型は int で、既定値は 0 です。次のいずれかの値を指定できます。

    説明 (単位)

    0x1

    指定した時間

    0x2

    0x4

    0x8

    時間

  • [ @freq_subday_interval = ] freq_subday_interval
    ジョブの実行間隔を示す freq_subday_type 期間の数を指定します。freq_subday_interval のデータ型は int で、既定値は 0 です。freq_subday_type が 1 の場合、freq_subday_interval は無視されます。注: 間隔は 10 秒より長くしてください。

  • [ @freq_relative_interval = ] freq_relative_interval
    freq_interval が 32 (月単位) の場合に、各月のジョブの freq_interval を指定します。freq_relative_intervalのデータ型は int で、既定値は 0 です。次のいずれかの値を指定できます。freq_type が 32 でない場合、freq_relative_interval は無視されます。

    説明 (単位)

    1

    第 1 週

    2

    第 2 週

    4

    第 3 週

    8

    第 4 週

    16

    最終週

  • [ @freq_recurrence_factor = ] freq_recurrence_factor
    ジョブを実行する週間隔または月間隔を指定します。freq_recurrence_factor は freq_type が 816、または 32 の場合にのみ使用されます。freq_recurrence_factor のデータ型は int で、既定値は 0 です。

  • [ @active_start_date = ] active_start_date
    ジョブの実行を開始できる日付を指定します。active_start_date のデータ型は int で、既定値は NULL です。既定値は今日の日付を示します。日付の形式は YYYYMMDD です。active_start_date が NULL でない場合、日付は 19900101 以降にする必要があります。

    スケジュールの作成後は、開始日が正しい日付であることを確認するようにしてください。詳細については、「スケジュールの作成とジョブへのアタッチ」の「開始日のスケジュール設定」を参照してください。

  • [ @active_end_date = ] active_end_date
    ジョブの実行を停止できる日付を指定します。active_end_date のデータ型は int で、既定値は 99991231 です。既定値は 9999 年 12 月 31 日を表します。形式は YYYYMMDD です。

  • [ @active_start_time = ] active_start_time
    active_start_date と active_end_date の間にある任意の日にジョブの実行を開始する時刻を指定します。active_start_time のデータ型は int で、既定値は 000000 です。既定値は 12:00:00 AM を 24 時間形式で表したものです。HHMMSS 形式で入力する必要があります。

  • [ @active_end_time = ] active_end_time
    active_start_date と active_end_date の間にある任意の日にジョブの実行を終了する時刻を指定します。active_end_time のデータ型は int で、既定値は 235959 です。既定値は 11:59:59 PM を 24 時間形式で表したものです。HHMMSS 形式で入力する必要があります。

  • [ @owner_login_name= ] 'owner_login_name'
    スケジュールを所有するサーバー プリンシパルの名前を指定します。owner_login_name のデータ型は sysname で、既定値は NULL です。既定値はスケジュールの所有者が作成者であることを示します。

  • [ @schedule_uid= ] schedule_uidOUTPUT
    スケジュールの一意識別子を指定します。schedule_uid は uniqueidentifier 型の変数です。

  • [ @schedule_id= ] schedule_idOUTPUT
    スケジュールの識別子を指定します。schedule_id は int 型の変数です。

  • [ @originating_server= ] server_name
    単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。

リターン コード値

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

結果セット

なし

説明

SQL Server Management Studio は、ジョブを簡単に管理できるグラフィカルなツールです。ジョブのインフラストラクチャを作成し、管理するには、このツールを使用することをお勧めします。

権限

既定では、このストアド プロシージャを実行できるのは、sysadmin 固定サーバー ロールのメンバーです。他のユーザーには、msdb データベースの次のいずれかの SQL Server エージェント固定データベース ロールが許可されている必要があります。

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

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

A. スケジュールを作成する

次の例では、RunOnce というスケジュールを作成します。スケジュールは 1 回のみ、スケジュールが作成された日の 23:30 に実行されます。

USE msdb ;
GO

EXEC dbo.sp_add_schedule
    @schedule_name = N'RunOnce',
    @freq_type = 1,
    @active_start_time = 233000 ;

GO

B. スケジュールを作成し、複数のジョブに適用する

次の例では、NightlyJobs というスケジュールを作成します。このスケジュールを使用するジョブは、毎日、サーバーの時間が 01:00 になると実行されます。この例では、スケジュールをジョブ BackupDatabase とジョブ RunReports にアタッチします。

注意

この例では、ジョブ BackupDatabase とジョブ RunReports が既に存在することを前提としています。

USE msdb ;
GO

EXEC sp_add_schedule
    @schedule_name = N'NightlyJobs' ,
    @freq_type = 4,
    @freq_interval = 1,
    @active_start_time = 010000 ;
GO


EXEC sp_attach_schedule
   @job_name = N'BackupDatabase',
   @schedule_name = N'NightlyJobs' ;
GO

EXEC sp_attach_schedule
   @job_name = N'RunReports',
   @schedule_name = N'NightlyJobs' ;
GO