レプリケーション スクリプトのアップグレード (レプリケーション Transact-SQL プログラミング)

適用対象: SQL Server Azure SQL Managed Instance

Transact-SQL スクリプト ファイルを使用して、レプリケーション トポロジをプログラムで構成できます。 詳細については、「Replication System Stored Procedures Concepts」 (レプリケーション システム ストアド プロシージャの概念) を参照してください。

重要

sysadmin ロールのメンバーが実行するスクリプトについては、アップグレードは必須ではありませんが、このトピックの説明に従って既存のスクリプトを変更することをお勧めします。 「 Replication Agent Security Model」の「エージェントに必要な権限」に記載されている各レプリケーション エージェントの最小権限を持つアカウントを指定します。

このようにセキュリティが強化されたことで、レプリケーション エージェント ジョブの実行に使用される Microsoft Windows アカウントを明示的に指定できるため、権限をより詳細に設定できます。既存のスクリプトに含まれる次のストアド プロシージャは、このセキュリティ強化の影響を受けます。

  • sp_addpublication_snapshot

    sp_addpublication_snapshot (Transact-SQL) を実行して、スナップショット エージェントをディストリビューターで実行するジョブを作成するときに、Windows 資格情報を @job_login および @job_password に指定することが必要になりました。

  • sp_addpushsubscription_agent

    sp_addpushsubscription_agent (Transact-SQL) を実行して、ジョブを明示的に追加し、ディストリビューターでディストリビューション エージェント ジョブを実行する Windows 資格情報 (@job_login および @job_password) を指定することが必要になりました。 SQL Server 2005 (9.x) よりも前のバージョンの SQL Server では、プッシュ サブスクリプションが作成されるときにこの操作が自動的に実行されました。

  • sp_addmergepushsubscription_agent

    sp_addmergepushsubscription_agent (Transact-SQL) を実行して、ジョブを明示的に追加し、ディストリビューターでマージ エージェント ジョブを実行する Windows 資格情報 (@job_login および @job_password) を指定することが必要になりました。 SQL Server 2005 (9.x) よりも前のバージョンの SQL Server では、プッシュ サブスクリプションが作成されるときにこの操作が自動的に実行されました。

  • sp_addpullsubscription_agent

    sp_addpullsubscription_agent (Transact-SQL) を実行して、ディストリビューション エージェントをサブスクライバーで実行するジョブを作成するときに、Windows 資格情報を @job_login および @job_password に指定することが必要になりました。

  • sp_addmergepullsubscription_agent

    sp_addmergepullsubscription_agent (Transact-SQL) を実行して、マージ エージェントをサブスクライバーで実行するジョブを作成するときに、Windows 資格情報を @job_login および @job_password に指定することが必要になりました。

  • sp_addlogreader_agent

    sp_addlogreader_agent (Transact-SQL) を実行して、ジョブを手動で追加し、ログ リーダー エージェントをディストリビューターで実行するときに使用する Windows 資格情報を入力することが必要になりました。 SQL Server 2005 (9.x) よりも前のバージョンの SQL Server では、トランザクション パブリケーションが作成されるときにこの操作が自動的に実行されました。

  • sp_addqreader_agent

    sp_addqreader_agent (Transact-SQL) を実行して、ジョブを手動で追加し、キュー リーダー エージェントをディストリビューターで実行するときに使用する Windows 資格情報を入力することが必要になりました。 SQL Server 2005 (9.x) よりも前のバージョンの SQL Server では、キュー更新をサポートするトランザクション パブリケーションが作成されるときにこの操作が自動的に実行されました。

SQL Server 2005 (9.x) で導入されたセキュリティ モデルでは、レプリケーション エージェントは常に @job_name@job_password に指定された資格情報を使用して Windows 認証を行い、SQL Server のローカル インスタンスに接続します。 レプリケーション エージェント ジョブを実行する際に使用する Windows アカウントの要件の詳細については、「 Replication Agent Security Model」を参照してください。

重要

可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 スクリプト ファイルに資格情報を格納した場合は、ファイル自体が暗号化されていることを確認してください。

スナップショット パブリケーションまたはトランザクション パブリケーションを構成するスクリプトをアップグレードするには

  1. 既存のスクリプトで、sp_addpublication (Transact-SQL) の前に、パブリッシャー側のパブリケーション データベースに sp_addlogreader_agent (Transact-SQL) を実行します。 ログ リーダー エージェントの実行に使用される Windows 資格情報を、@job_name および @job_password で指定します。 エージェントがパブリッシャーに接続する際に SQL Server 認証を使用する場合、@publisher_security_mode0 の値を、@publisher_login@publisher_password に SQL Server ログイン情報を指定する必要もあります。 これにより、パブリケーション データベース用のログ リーダー エージェント ジョブが作成されます。

    Note

    この手順はトランザクション パブリケーションにのみ適用されます。スナップショット パブリケーションの場合は不要です。

  2. (省略可能) sp_addpublication (Transact-SQL) の前に、ディストリビューター側のディストリビューション データベースに sp_addqreader_agent (Transact-SQL) を実行します。 キュー リーダー エージェントの実行に使用される Windows 資格情報を、@job_name および @job_password で指定します。 これにより、ディストリビューター用のキュー リーダー エージェント ジョブが作成されます。

    Note

    この手順は、キュー更新サブスクライバーをサポートするトランザクション パブリケーションでのみ必要です。

  3. (省略可) sp_addpublication (Transact-SQL) の実行を更新して、新しいレプリケーション機能を実装するパラメーターに既定以外の値を設定します。

  4. パブリッシャー側のパブリケーション データベースに対して、sp_addpublication (Transact-SQL) の後に、sp_addpublication_snapshot (Transact-SQL) を実行します。 @publication を指定し、スナップショット エージェントの実行に使用する Windows 資格情報を @job_name@job_password で指定します。 エージェントがパブリッシャーに接続する際に SQL Server 認証を使用する場合、@publisher_security_mode0 の値を、@publisher_login@publisher_password に SQL Server ログイン情報を指定する必要もあります。 これにより、パブリケーション用のスナップショット エージェント ジョブが作成されます。

  5. (省略可) sp_addarticle (Transact-SQL) の実行を更新して、新しいレプリケーション機能を実装するパラメーターに既定以外の値を設定します。

スナップショット パブリケーションまたはトランザクション パブリケーションにサブスクリプションを追加するスクリプトをアップグレードするには

  1. サブスクリプションを作成するストアド プロシージャを実行した後、ディストリビューション エージェント ジョブを作成するストアド プロシージャを実行して、サブスクリプションを同期するようにしてください。 使用するストアド プロシージャは、サブスクリプションの種類に応じて変わります。

マージ パブリケーションを構成するスクリプトをアップグレードするには

  1. (省略可) 既存のスクリプトで、sp_addmergepublication (Transact-SQL) の実行を更新して、新しいレプリケーション機能を実装するパラメーターに既定以外の値を設定します。

  2. パブリッシャー側のパブリケーション データベースに対して、sp_addmergepublication (Transact-SQL&) の後に、sp_addpublication_snapshot (Transact-SQL) を実行します。 @publication を指定し、スナップショット エージェントの実行に使用する Windows 資格情報を @job_name@job_password で指定します。 エージェントがパブリッシャーに接続する際に SQL Server 認証を使用する場合、@publisher_security_mode0 の値を、@publisher_login@publisher_password に SQL Server ログイン情報を指定する必要もあります。 これにより、パブリケーション用のスナップショット エージェント ジョブが作成されます。

  3. (省略可) sp_addmergearticle (Transact-SQL) の実行を更新して、新しいレプリケーション機能を実装するパラメーターに既定以外の値を設定します。

マージ パブリケーションにサブスクリプションを追加するスクリプトをアップグレードするには

  1. サブスクリプションを作成するストアド プロシージャを実行した後、マージ エージェント ジョブを作成するストアド プロシージャを実行して、サブスクリプションを同期するようにしてください。 使用するストアド プロシージャは、サブスクリプションの種類に応じて変わります。

A. トランザクションパブリケーションを作成する SQL Server 2000 スクリプト

次に、Product テーブルに関するトランザクション パブリケーションを作成する SQL Server 2000 (8.x) スクリプトの例を示します。 このパブリケーションでは、フェールオーバーとしてキュー更新を使用する即時更新がサポートされます。 読みやすくするために、既定のパラメーターは削除されています。

USE [Northwind]
GO

DECLARE @publication AS sysname
DECLARE @publicationDB AS sysname
DECLARE @article AS sysname
SET @publication = N'NwdProductTran'
SET @publicationDB = N'Northwind'
SET @article = N'Products'

-- Enable the replication database.
EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname = N'publish', 
    @value = N'true'

-- Add the transactional publication.
EXEC sp_addpublication 
    @publication = @publication, 
    @sync_method = N'native', 
    @status = N'active', 
    @repl_freq = N'continuous', 
    @description = N'Transactional publication of Northwind.', 
    @allow_push = N'true', 
    @allow_pull = N'true', 
    @allow_sync_tran = N'true', 
    @autogen_sync_procs = N'true', 
    @allow_queued_tran = N'true'

-- Add a snapshot job.
EXEC sp_addpublication_snapshot 
    @publication = @publication

-- Add the transactional articles.
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @article, 
    @source_owner = N'dbo', 
    @source_object = @article, 
    @destination_table = @article, 
    @type = N'logbased', 
    @schema_option = 0x00000000000080F3, 
    @ins_cmd = N'CALL sp_MSins_Products', 
    @del_cmd = N'XCALL sp_MSdel_Products', 
    @upd_cmd = N'XCALL sp_MSupd_Products', 
    @auto_identity_range = N'false'
GO

B. トランザクション パブリケーションを作成する SQL Server 2005 以降のスクリプト

次に、トランザクション パブリケーションを作成する以前のスクリプトをアップグレードする例を示します。これは SQL Server 2005 (9.x) 以降のバージョンで正常に実行されます。 このパブリケーションでは、フェールオーバーとしてキュー更新を使用する即時更新がサポートされます。 新しいパラメーターの既定値は、明示的に宣言されています。

Note

Windows 資格情報は、 sqlcmd スクリプト変数を使用して実行時に指定されます。

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. 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".

-- Execute at the Distributor.
USE [distribution]

DECLARE @login AS sysname;
DECLARE @password AS sysname;
-- Specify the Windows account to run the Queue Reader Agent.
SET @login = $(Login); 
-- Pass the password at runtime.
SET @password = $(Password); 

-- Execute sp_addqreader_agent to create the Queue Reader Agent job. 
EXEC sp_addqreader_agent 
    @job_login = @login, 
    @job_password = @password;
GO

-- Execute at the Publisher.
USE [Northwind]
GO

DECLARE @publication AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @article AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran';
SET @publicationDB = N'Northwind';
SET @article = N'Products';
-- Specify the Windows account to run the Log Reader and Snapshot Agents.
SET @login = $(Login); 
-- Pass the password at runtime.
SET @password = $(Password); 

-- Enable the replication 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;

-- Add the transactional publication.
EXEC sp_addpublication 
    @publication = @publication, 
    @sync_method = N'native', 
    @repl_freq = N'continuous', 
    @status = N'active',
    @description = N'Transactional publication of Northwind.', 
    @allow_push = N'true', 
    @allow_pull = N'true', 
    @allow_sync_tran = N'true', 
    @autogen_sync_procs = N'true', 
    @allow_queued_tran = N'true',
    @replicate_ddl = 1,
    @enabled_for_p2p = N'false';

-- 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;

-- Add a transactional article.
EXEC sp_addarticle 
  @publication = @publication, 
  @article = @article, 
  @source_owner = N'dbo', 
  @source_object = @article, 
  @destination_table = @article, 
  @type = N'logbased', 
  @schema_option = 0x00000000000080F3, 
  @ins_cmd = N'CALL sp_MSins_Products', 
  @del_cmd = N'XCALL sp_MSdel_Products', 
  @upd_cmd = N'XCALL sp_MSupd_Products', 
  @auto_identity_range = N'false',
  @identityrangemanagementoption = N'manual',
  @fire_triggers_on_snapshot = N'false';
GO

C: マージ パブリケーションを作成する SQL Server 2000 スクリプト

次に、Customers テーブルに関するマージ パブリケーションを作成する SQL Server 2000 (8.x) スクリプトの例を示します。 読みやすくするために、既定のパラメーターは削除されています。

-- Enable the replication database.
USE [Northwind]
GO

DECLARE @publicationDB AS sysname
DECLARE @publication AS sysname
DECLARE @article AS sysname
SET @publicationDB = N'Northwind' 
SET @publication = N'NwdCustomersMerge' 
SET @article = N'Customers' 

EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname = N'merge publish', 
    @value = N'true'

-- Add the merge publication.
EXEC sp_addmergepublication 
    @publication = @publication, 
    @description = N'Merge publication of Northwind.', 
    @retention = 14, 
    @sync_mode = N'native', 
    @centralized_conflicts = N'true', 
    @dynamic_filters = N'false', 
    @keep_partition_changes = N'false'
 
EXEC sp_addpublication_snapshot 
    @publication = @publication

-- Add the merge articles.
EXEC sp_addmergearticle 
    @publication = @publication, 
    @article = @article, 
    @source_owner = N'dbo', 
    @source_object = @article, 
    @type = N'table', 
    @description = null, 
    @column_tracking = N'true', 
    @schema_option = 0x000000000000CFF1
 GO

D. マージ パブリケーションを作成する SQL Server 2005 以降のスクリプト

次に、マージ パブリケーションを作成する以前のスクリプトの例を示します。アップグレードすることにより、 SQL Server 2005 (9.x) 以降のバージョンで正常に実行されます。 新しいパラメーターの既定値は、明示的に宣言されています。

Note

Windows 資格情報は、 sqlcmd スクリプト変数を使用して実行時に指定されます。

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. 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".

-- Enabling the replication database
-- Enable the replication database.
USE [Northwind]
GO

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'Northwind';
SET @publication = N'NwdCustomersMerge';
SET @article = N'Customers';
-- Specify the Windows account to run the Snapshot Agent.
SET @login = $(Login); 
-- Supply the password at runtime.
SET @password = $(Password); 

EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname = N'merge publish', 
    @value = N'true';

-- Add the merge publication.
EXEC sp_addmergepublication 
    @publication = @publication, 
    @description = N'Merge publication of Northwind.', 
    @retention = 14, 
    @sync_mode = N'native', 
    @dynamic_filters = N'false', 
    @keep_partition_changes = N'false',
    -- Only set to '90RTM' if all Subscribers are SQL Server 2005.
    @publication_compatibility_level = N'90RTM',
    @replicate_ddl = 1,
    @allow_subscriber_initiated_snapshot = N'true',
    @allow_web_synchronization = N'false',
    @allow_partition_realignment = N'true',
    @retention_period_unit = N'day',
    @automatic_reinitialization_policy = 0,
    @conflict_logging = N'both';
 
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login,
    @job_password = @password;

-- Add the merge article.
EXEC sp_addmergearticle 
    @publication = @publication, 
    @article = @article, 
    @source_owner = N'dbo', 
    @source_object = @article, 
    @type = N'table', 
    @description = null, 
    @column_tracking = N'true', 
    @schema_option = 0x0000000000034FD1,
    @partition_options = 0,
    @subscriber_upload_options = 0,
    @identityrangemanagementoption = N'manual',
    @delete_tracking = N'true',
    @compensate_for_errors = N'false',
    @stream_blob_columns = N'true';
GO

E. トランザクション パブリケーションへのプッシュ サブスクリプションを作成する SQL Server 2000 スクリプト

次に、トランザクション パブリケーションへのプッシュ サブスクリプションを作成する SQL Server 2000 (8.x) スクリプトの例を示します。 読みやすくするために、既定のパラメーターは削除されています。

DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdProductTran' 
SET @subscriber = N'MYSUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica' 

-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber 
    @subscriber = @subscriber

-- Add a push subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'push'
GO

F. トランザクション パブリケーションへのプッシュ サブスクリプションを作成する SQL Server 2005 以降のスクリプト

次に、トランザクション パブリケーションへのプッシュ サブスクリプションを作成する以前のスクリプトの例を示します。アップグレードすることにより、SQL Server 2005 (9.x) 以降のバージョンで正常に実行されます。 新しいパラメーターの既定値は、明示的に宣言されています。

Note

Windows 資格情報は、 sqlcmd スクリプト変数を使用して実行時に指定されます。

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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 @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran'; 
SET @subscriber = $(Subscriber); 
SET @subscriptionDB = N'NorthwindReplica'; 
-- Specify the Windows account to run the Distribution Agent.
SET @login = $(Login); 
-- Supply the password at runtime.
SET @password = $(Password); 

-- Add a push subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'push';

-- Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @job_login = @login, 
    @job_password = @password;
GO

G. マージ パブリケーションへのプッシュ サブスクリプションを作成する SQL Server 2000 スクリプト

次に、マージ パブリケーションへのプッシュ サブスクリプションを作成する SQL Server 2000 (8.x) スクリプトの例を示します。 読みやすくするために、既定のパラメーターは削除されています。

DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge' 
SET @subscriber = N'SUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica' 

-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber 
  @subscriber = @subscriber

-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @subscriber_type = N'local',
  @sync_type = N'automatic'
GO

H. マージ パブリケーションへのプッシュ サブスクリプションを作成する SQL Server 2005 以降のスクリプト

次に、マージ パブリケーションへのプッシュ サブスクリプションを作成する以前のスクリプトの例を示します。アップグレードすることにより、SQL Server 2005 (9.x) 以降のバージョンで正常に実行されます。 新しいパラメーターの既定値は、明示的に宣言されています。

Note

Windows 資格情報は、 sqlcmd スクリプト変数を使用して実行時に指定されます。

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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 @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdCustomersMerge'; 
SET @subscriber = $(Subscriber); 
SET @subscriptionDB = N'NorthwindReplica'; 
-- Specify the Windows account to run the Merge Agent.
SET @login = $(Login); 
-- Supply the password at runtime.
SET @password = $(Password); 

-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @subscription_type = N'push';

-- Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @job_login = @login, 
    @job_password = @password;
GO

I. トランザクション パブリケーションへのプル サブスクリプションを作成する SQL Server 2000 スクリプト

次に、トランザクション パブリケーションへのプル サブスクリプションを作成する SQL Server 2000 (8.x) スクリプトの例を示します。 読みやすくするために、既定のパラメーターは削除されています。

DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge' 
SET @subscriber = N'SUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica' 

-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber 
  @subscriber = @subscriber

-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @subscriber_type = N'local',
  @sync_type = N'automatic'
GO

J. トランザクション パブリケーションへのプル サブスクリプションを作成する SQL Server 2005 以降のスクリプト

次に、トランザクション パブリケーションへのプル サブスクリプションを作成する以前のスクリプトの例を示します。アップグレードすることにより、SQL Server 2005 (9.x) 以降のバージョンで正常に実行されます。 新しいパラメーターの既定値は、明示的に宣言されています。

Note

Windows 資格情報は、 sqlcmd スクリプト変数を使用して実行時に指定されます。

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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".

-- Execute at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran'; 
SET @publisher = $(Publisher); 
SET @publicationDB = N'Northwind'; 
-- Specify the Windows account to run the Distribution Agent.
SET @login = $(Login); 
-- Supply the password at runtime.
SET @password = $(Password); 

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [NorthwindReplica]
EXEC sp_addpullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB,
    @subscription_type = N'pull';

-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication, 
    @distributor = @publisher,
    @job_login = @login,
    @job_password = @password;
GO

-- Execute at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdProductTran'; 
SET @subscriber = $(Subscriber); 
SET @subscriptionDB = N'NorthwindReplica'; 

-- Add a pull subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'pull';
GO

K. マージ パブリケーションへのプル サブスクリプションを作成する SQL Server 2000 スクリプト

次に、マージ パブリケーションへのプル サブスクリプションを作成する SQL Server 2000 (8.x) スクリプトの例を示します。 読みやすくするために、既定のパラメーターは削除されています。

-- Execute at the Subscriber
DECLARE @publication AS sysname
DECLARE @publisher AS sysname
DECLARE @publicationDB AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge' 
SET @publisher = N'PUBSERVER' 
SET @publicationDB = N'Northwind' 
SET @subscriber = N'SUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica'

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [NorthwindReplica]
EXEC sp_addmergepullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @distributor = @publisher
GO

-- Execute at the Publisher.
DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge' 
SET @subscriber = N'MYSUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica' 

-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber 
  @subscriber = @subscriber

-- Add a pull subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'pull',
  @subscriber_type = N'local',
  @sync_type = N'automatic'
GO

L. マージ パブリケーションへのプル サブスクリプションを作成する SQL Server 2005 以降のスクリプト

次に、マージ パブリケーションへのプル サブスクリプションを作成する以前のスクリプトの例を示します。アップグレードすることにより、 SQL Server 2005 (9.x) 以降のバージョンで正常に実行されます。 新しいパラメーターの既定値は、明示的に宣言されています。

Note

Windows 資格情報は、 sqlcmd スクリプト変数を使用して実行時に指定されます。

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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".

-- Execute at the Subscriber
DECLARE @publication  AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdCustomersMerge'; 
SET @publisher = $(Publisher); 
SET @publicationDB = N'Northwind'; 
-- Specify the Windows account to run the Merge Agent.
SET @login = $(Login); 
-- Pass the password at runtime.
SET @password = $(Password); 

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [NorthwindReplica]
EXEC sp_addmergepullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication,
  @distributor = @publisher,
  @job_login = @login,
  @job_password = @password;
GO

-- Execute at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdCustomersMerge';
SET @subscriber = $(Subscriber);
SET @subscriptionDB = N'NorthwindReplica';

-- Add a pull subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'pull',
  @subscriber_type = N'local',
  @sync_type = N'automatic';
GO

参照

パブリケーションを作成する
プッシュ サブスクリプションを作成する
Create a Pull Subscription
レプリケーションのセキュリティ設定の表示および変更
MSSQL_ENG021797
MSSQL_ENG021798
Replication System Stored Procedures Concepts
レプリケートされたデータベースのアップグレード