sp_addpublication_snapshot (Transact-SQL)

指定されたパブリケーションのスナップショット エージェントを作成します。 このストアド プロシージャは、パブリッシャー側でパブリケーション データベースについて実行されます。

セキュリティに関する注意セキュリティに関する注意

リモート ディストリビューターを使用するパブリッシャーを構成する場合は、job_login および job_password を含むすべてのパラメーターに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。

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

構文

sp_addpublication_snapshot [ @publication= ] 'publication'
    [ , [ @frequency_type= ] frequency_type ]
    [ , [ @frequency_interval= ] frequency_interval ]
    [ , [ @frequency_subday= ] frequency_subday ]
    [ , [ @frequency_subday_interval= ] frequency_subday_interval ]
    [ , [ @frequency_relative_interval= ] frequency_relative_interval ]
    [ , [ @frequency_recurrence_factor= ] frequency_recurrence_factor ]
    [ , [ @active_start_date= ] active_start_date ]
    [ , [ @active_end_date= ] active_end_date ]
    [ , [ @active_start_time_of_day= ] active_start_time_of_day ]
    [ , [ @active_end_time_of_day= ] active_end_time_of_day ]
    [ , [ @snapshot_job_name = ] 'snapshot_agent_name' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] 'publisher_login' ]
    [ , [ @publisher_password = ] 'publisher_password' ] 
    [ , [ @job_login = ] 'job_login' ]
    [ , [ @job_password = ] 'job_password' ]
    [ , [ @publisher = ] 'publisher' ]

引数

  • [ @publication=] 'publication'
    パブリケーションの名前です。 publication のデータ型は sysname で、既定値はありません。

  • [ @frequency_type=] frequency_type
    スナップショット エージェントの実行頻度を指定します。 frequency_type のデータ型は int で、次のいずれかの値を指定できます。

    説明

    1

    1 回のみ

    4 (既定値)

    毎日

    8

    毎週

    16

    毎月

    32

    月単位に frequency_interval で示される間隔

    64

    SQL Server エージェントの起動時

    128

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

  • [ @frequency_interval=] frequency_interval
    frequency_type で設定した頻度に適用される値を指定します。 frequency_interval のデータ型は int で、次のいずれかの値を指定できます。

    frequency_type の値

    frequency_interval への影響

    1

    frequency_interval は使用されません。

    4 (既定値)

    frequency_interval の日数ごとに実行されます。既定値は毎日です。

    8

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

    1 = 日曜日 |

    2 = 月曜日 |

    4 = 火曜日 |

    8 = 水曜日 |

    16 = 木曜日 |

    32 = 金曜日 |

    64 = 土曜日

    16

    毎月の frequency_interval で指定した日に実行されます。

    32

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

    1 = 日曜日 |

    2 = 月曜日 |

    3 = 火曜日 |

    4 = 水曜日 |

    5 = 木曜日 |

    6 = 金曜日 |

    7 = 土曜日 |

    8 = 日 |

    9 = 平日 |

    10 = 土日

    64

    frequency_interval は使用されません。

    128

    frequency_interval は使用されません。

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

    説明

    1

    1 回

    2

    4 (既定値)

    8

  • [ @frequency_subday_interval=] frequency_subday_interval
    frequency_subday の間隔を指定します。 frequency_subday_interval のデータ型は int で、既定値は 5 (5 分間隔) です。

  • [ @frequency_relative_interval=] frequency_relative_interval
    スナップショット エージェントを実行する日付を指定します。 frequency_relative_interval のデータ型は int で、既定値は 1 です。

  • [ @frequency_recurrence_factor=] frequency_recurrence_factor
    frequency_type で使用される定期実行係数を指定します。 frequency_recurrence_factor のデータ型は int で、既定値は 0 です。

  • [ @active_start_date=] active_start_date
    スナップショット エージェントを最初にスケジュール設定する日付を、YYYYMMDD 形式で指定します。 active_start_date のデータ型は int で、既定値は 0 です。

  • [ @active_end_date=] active_end_date
    スナップショット エージェントのスケジュール設定を停止する日付を、YYYYMMDD 形式で指定します。 active_end_date のデータ型は int で、既定値は 99991231 です。これは 9999 年 12 月 31 日を示します。

  • [ @active_start_time_of_day=] active_start_time_of_day
    スナップショット エージェントを最初にスケジュール設定する時刻を HHMMSS 形式で指定します。 active_start_time_of_day のデータ型は int で、既定値は 0 です。

  • [ @active_end_time_of_day=] active_end_time_of_day
    スナップショット エージェントのスケジュール設定を停止する時刻を HHMMSS 形式で指定します。 active_end_time_of_day のデータ型は int で、既定値は 235959 です。235959 は、24 時間制の 午後 11 時 59 分 59 秒を意味します。

  • [ @snapshot_job_name = ] 'snapshot_agent_name'
    既存のジョブが使用されている場合、既存のスナップショット エージェントのジョブ名を指定します。 snapshot_agent_name のデータ型は nvarchar(100) で、既定値は NULL です。 このパラメーターは内部でのみ使用するため、新しいパブリケーションを作成するときに指定する必要はありません。 snapshot_agent_name を指定する場合、job_login と job_password の値は NULL にする必要があります。

  • [ @publisher_security_mode= ] publisher_security_mode
    パブリッシャーへの接続時にエージェントが使用するセキュリティ モードを指定します。 publisher_security_mode のデータ型は smallint で、既定値は 1 です。 0 は SQL Server 認証を表し、1 は Windows 認証を表します。 SQL Server 以外のパブリッシャーに対しては、値 0 を指定する必要があります。可能な場合は、Windows 認証を使用します。

  • [ @publisher_login= ] 'publisher_login'
    パブリッシャーへの接続時に使用するログインを指定します。 publisher_login のデータ型は sysname で、既定値は NULL です。 publisher_security_mode が 0 の場合は、publisher_login を指定する必要があります。 publisher_login が NULL で publisher_security_mode が 1 の場合、パブリッシャーへの接続時には job_login で指定した Windows アカウントが使用されます。

  • [ @publisher_password= ] 'publisher_password'
    パブリッシャーへの接続時に使用するパスワードを指定します。 publisher_password のデータ型は sysname で、既定値は NULL です。

    セキュリティに関する注意セキュリティに関する注意

    スクリプト ファイルには認証情報を保存しないでください。 セキュリティを強化するため、実行時にログイン名とパスワードを指定することをお勧めします。

  • [ @job_login= ] 'job_login'
    エージェントを実行する Windows アカウント用のログインを指定します。 job_login のデータ型は nvarchar(257) で、既定値は NULL です。 この Windows アカウントは、エージェントがディストリビューターに接続するときに常に使用されます。 新しいスナップショット エージェント ジョブを作成するときにはこのパラメーターを指定する必要があります。

    注意

    SQL Server 以外のパブリッシャーの場合、このログインは sp_adddistpublisher (Transact-SQL) で指定したものと同じであることが必要です。

  • [ @job_password= ] 'job_password'
    エージェントを実行する Windows アカウント用のパスワードを指定します。 job_password のデータ型は sysname で、既定値はありません。 新しいスナップショット エージェント ジョブを作成するときにはこのパラメーターを指定する必要があります。

    セキュリティに関する注意セキュリティに関する注意

    スクリプト ファイルには認証情報を保存しないでください。 セキュリティを強化するため、実行時にログイン名とパスワードを指定することをお勧めします。

  • [ @publisher= ] 'publisher'
    SQL Server 以外のパブリッシャーを指定します。 publisher のデータ型は sysname で、既定値は NULL です。

    注意

    SQL Server パブリッシャーでスナップショット エージェントを作成するときは publisher を使用しないでください。

リターン コードの値

成功した場合は 0 を、失敗した場合は 1 をそれぞれ返します。

説明

sp_addpublication_snapshot は、スナップショット レプリケーション、トランザクション レプリケーション、マージ レプリケーションで使用されます。

使用例

-- To avoid storing the login and password in the script file, the values 
-- are passed into SQLCMD as scripting variables. For information about 
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksProductTran'; 
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login); 
-- This should be passed at runtime.
SET @password = $(Password); 

-- Enable transactional or snapshot replication on the publication database.
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- Execute sp_addlogreader_agent to create the agent job. 
EXEC sp_addlogreader_agent 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;

-- Create a new transactional publication with the required properties. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_push = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true';

-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;
GO

権限

sp_addpublication_snapshot を実行できるのは、固定サーバー ロール sysadmin または固定データベース ロール db_owner のメンバーだけです。

関連項目

参照

sp_addpublication (Transact-SQL)

sp_changepublication_snapshot (Transact-SQL)

sp_startpublication_snapshot (Transact-SQL)

レプリケーション ストアド プロシージャ (Transact-SQL)

概念

パブリケーションの作成

スナップショットの作成および適用