sp_addpublication_snapshot (Transact-SQL)
適用対象: SQL ServerAzure SQL Managed Instance
指定されたパブリケーションのスナップショット エージェントを作成します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。
重要
リモート ディストリビューターを使用するパブリッシャーを構成する場合は、 job_login および job_passwordを含むすべてのパラメーターに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「接続を暗号化するために SQL Server データベース エンジンを構成する」を参照してください。
構文
sp_addpublication_snapshot
[ @publication = ] N'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 = ] N'snapshot_job_name' ]
[ , [ @publisher_security_mode = ] publisher_security_mode ]
[ , [ @publisher_login = ] N'publisher_login' ]
[ , [ @publisher_password = ] N'publisher_password' ]
[ , [ @job_login = ] N'job_login' ]
[ , [ @job_password = ] N'job_password' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @distributor_security_mode = ] distributor_security_mode ]
[ , [ @distributor_login = ] N'distributor_login' ]
[ , [ @distributor_password = ] N'distributor_password' ]
[ ; ]
引数
[ @publication = ] N'publication'
出版物の名前。 @publicationは sysname で、既定値はありません。
[ @frequency_type = ] frequency_type
スナップショット エージェントが実行される頻度。 @frequency_typeは int であり、次のいずれかの値を指定できます。
Value | 説明 |
---|---|
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 であり、これらの値のいずれかになります。
Value | 説明 |
---|---|
1 |
1 回。 |
2 |
Second |
4 (既定値) |
分 |
8 |
時間 |
[ @frequency_subday_interval = ] frequency_subday_interval
frequency_subdayの間隔 (分単位)。 @frequency_subday_intervalは int で、既定値は 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
24 時間制で測定される午後 11 時 59 分 59 分を意味します。
[ @snapshot_job_name = ] N'スナップショット_job_name'
既存のジョブが使用されている場合は、既存のスナップショット エージェント ジョブ名の名前。 @スナップショット_job_name は nvarchar(100) で、既定値は NULL
. このパラメーターは内部使用を目的としており、新しいパブリケーションを作成するときに指定しないでください。 @スナップショット_agent_name を指定する場合、@job_loginと@job_passwordをNULL
指定する必要があります。
[ @publisher_security_mode = ] publisher_security_mode
Note
Microsoft Entra ID は、以前は Azure Active Directory (Azure AD) と呼ばれていました。
パブリッシャーに接続するときにエージェントによって使用されるセキュリティ モード。 @publisher_security_modeは int で、既定値は 1
. SQL Server 以外の 0
パブリッシャーには値を指定する必要があります。 可能な場合は、Windows 認証を使用します。 次の値は、セキュリティ モードを定義します。
0
は SQL Server 認証を指定します。1
はWindows 認証を指定します。2
は、SQL Server 2022 (16.x) CU 6 以降の Microsoft Entra パスワード認証を指定します。3
は、SQL Server 2022 (16.x) CU 6 以降の Microsoft Entra 統合認証を指定します。4
は、SQL Server 2022 (16.x) CU 6 以降の Microsoft Entra トークン認証を指定します。
[ @publisher_login = ] N'publisher_login'
パブリッシャーに接続するときに使用されるログイン。 @publisher_loginは sysname で、既定値は NULL
. @publisher_security_modeの場合は、@publisher_loginを0
指定する必要があります。 @publisher_loginがNULL
@publisher_security_modeされている場合は1
、パブリッシャーに接続するときに@job_loginで指定されたアカウントが使用されます。
[ @publisher_password = ] N'publisher_password'
パブリッシャーに接続するときに使用するパスワード。 @publisher_passwordは sysname で、既定値は NULL
.
重要
認証情報はスクリプト ファイルに格納しないでください。 セキュリティを向上させるために、実行時にログイン名とパスワードを指定することをお勧めします。
[ @job_login = ] N'job_login'
エージェントが実行されているアカウントのログイン。 Azure SQL Managed Instance では、SQL Server アカウントを使用します。 @job_loginは nvarchar(257) で、既定値は NULL
. このアカウントは、ディストリビューターへのエージェント接続に常に使用されます。 新しいスナップショット エージェント ジョブを作成するときに、このパラメーターを指定する必要があります。
SQL Server 以外のパブリッシャーの場合、これは sp_adddistpublisher (Transact-SQL) で指定されたログインと同じである必要があります。
[ @job_password = ] N'job_password'
エージェントが実行される Windows アカウントのパスワード。 @job_passwordは sysname で、既定値はありません。 新しいスナップショット エージェント ジョブを作成するときに、このパラメーターを指定する必要があります。
重要
認証情報はスクリプト ファイルに格納しないでください。 セキュリティを向上させるために、実行時にログイン名とパスワードを指定することをお勧めします。
[ @publisher = ] N'publisher'
SQL Server 以外のパブリッシャーを指定します。 @publisherは sysname で、既定値は NULL
.
@publisherは、SQL Server パブリッシャーでスナップショット エージェントを作成するときに使用しないでください。
[ @distributor_security_mode = ] distributor_security_mode
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
[ @distributor_login = ] N'distributor_login'
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
[ @distributor_password = ] N'distributor_password'
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
リターン コードの値
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
アクセス許可
sysadmin 固定サーバー ロールまたは固定データベース ロールdb_ownerメンバーのみが実行sp_addpublication_snapshot
できます。
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示