Dela via


Uppgradera replikeringsskript (replikering Transact-SQL programmering)

gäller för:SQL ServerAzure SQL Managed Instance

Transact-SQL skriptfiler kan användas för att programmatiskt konfigurera en replikeringstopologi. Mer information finns i Begrepp för lagrade procedurer för replikeringssystem.

Viktigt!

Även om du inte behöver uppgradera skript som körs av medlemmar i sysadmin-rollen rekommenderar vi att du ändrar befintliga skript enligt beskrivningen i det här avsnittet. Ange ett konto som har minsta behörighet för varje replikeringsagent enligt beskrivningen i avsnittet "Behörigheter som krävs av agenter" i avsnittet Säkerhetsmodell för replikeringsagent.

Dessa säkerhetsförbättringar, som ger mer kontroll över behörigheter genom att du uttryckligen kan ange de Microsoft Windows-konton under vilka replikeringsagentjobb körs, påverkar följande lagrade procedurer i befintliga skript:

  • sp_addpublication_snapshot:

    Du bör nu ange Windows-autentiseringsuppgifterna som @job_login och @job_password när du kör sp_addpublication_snapshot (Transact-SQL) för att skapa jobbet under vilket Ögonblicksbildsagenten körs på distributören.

  • sp_addpushsubscription_agent:

    Du bör nu köra sp_addpushsubscription_agent (Transact-SQL) för att uttryckligen lägga till ett jobb och ange Windows-autentiseringsuppgifterna (@job_login och @job_password) under vilka distributionsagentjobbet körs på distributören. I versioner av SQL Server före SQL Server 2005 (9.x) gjordes detta automatiskt när en push-prenumeration skapades.

  • sp_addmergepushsubscription_agent:

    Du bör nu köra sp_addmergepushsubscription_agent (Transact-SQL) för att uttryckligen lägga till ett jobb och ange Windows-autentiseringsuppgifterna (@job_login och @job_password) under vilka sammanslagningsagentjobbet körs på distributören. I versioner av SQL Server före SQL Server 2005 (9.x) gjordes detta automatiskt när en push-prenumeration skapades.

  • sp_addpullsubscription_agent:

    Du bör nu ange Windows-autentiseringsuppgifterna som @job_login och @job_password när du kör sp_addpullsubscription_agent (Transact-SQL) för att skapa jobbet där distributionsagenten körs hos prenumeranten.

  • sp_addmergepullsubscription_agent:

    Du bör nu ange Windows-autentiseringsuppgifterna som @job_login och @job_password när du exekverar sp_addmergepullsubscription_agent (Transact-SQL) för att skapa jobbet under vilket Merge Agent körs på abonnenten.

  • sp_addlogreader_agent:

    Du bör nu köra sp_addlogreader_agent (Transact-SQL) för att manuellt lägga till jobbet och ange de Windows-autentiseringsuppgifter som log reader-agenten körs under hos distributören. I versioner av SQL Server före SQL Server 2005 (9.x) gjordes detta automatiskt när en transaktionspublikation skapades.

  • sp_addqreader_agent:

    Du bör nu köra sp_addqreader_agent (Transact-SQL) för att manuellt lägga till jobbet och ange de Windows-autentiseringsuppgifter som köläsaragenten körs under vid distributören. I versioner av SQL Server före SQL Server 2005 (9.x) gjordes detta automatiskt när en transaktionspublikation som stödde köuppdatering skapades.

I säkerhetsmodellen som introducerades i SQL Server 2005 (9.x) upprättar replikeringsagenter alltid anslutningar till den lokala instansen av SQL Server med Windows-autentisering med hjälp av de autentiseringsuppgifter som anges i @job_name och @job_password. Information om kraven för Windows-konton som används när du kör replikeringsagentjobb finns i Säkerhetsmodell för replikeringsagent.

Viktigt!

När det är möjligt uppmanar du användarna att ange säkerhetsautentiseringsuppgifter vid körning. Om du lagrar autentiseringsuppgifter i en skriptfil kontrollerar du att själva filen är skyddad.

Uppgradera skript som konfigurerar en ögonblicksbild eller transaktionspublikation

  1. Kör sp_addlogreader_agent (Transact-SQL) på Publisher i publikationsdatabasen innan sp_addpublication (Transact-SQL). Ange de Windows-autentiseringsuppgifter under vilka Log Reader Agent körs för @job_name och @job_password. Om agenten använder SQL Server-autentisering när du ansluter till Publisher måste du också ange värdet 0 för @publisher_security_mode och SQL Server-inloggningsinformationen för @publisher_login och @publisher_password. Då skapas ett Log Reader Agent-jobb för publikationsdatabasen.

    Anmärkning

    Det här steget är endast för transaktionspublikationer och krävs inte för ögonblicksbildspublikationer.

  2. (Valfritt) Innan sp_addpublication (Transact-SQL)kör du sp_addqreader_agent (Transact-SQL) på distributören på distributionsdatabasen. Ange de Windows-autentiseringsuppgifter under vilka queue reader-agenten körs för @job_name och @job_password. Då skapas ett köläsaragentjobb för distributören.

    Anmärkning

    Det här steget krävs endast för transaktionspublikationer som stöder köuppdatering av prenumeranter.

  3. (Valfritt) Uppdatera körningen av sp_addpublication (Transact-SQL) för att ange eventuella icke-standardvärden för parametrar som implementerar nya replikeringsfunktioner.

  4. Kör sp_addpublication (Transact-SQL), och därefter kör sp_addpublication_snapshot (Transact-SQL) på Publisher i publikationsdatabasen. Ange @publication och de Windows-autentiseringsuppgifter under vilka Ögonblicksbildsagenten körs för @job_name och @job_password. Om agenten använder SQL Server-autentisering när du ansluter till Publisher måste du också ange värdet 0 för @publisher_security_mode och SQL Server-inloggningsinformationen för @publisher_login och @publisher_password. Då skapas ett Snapshot Agent-jobb för publikationen.

  5. (Valfritt) Uppdatera körningen av sp_addarticle (Transact-SQL) för att ange eventuella icke-standardvärden för parametrar som implementerar nya replikeringsfunktioner.

Uppgradera skript som lägger till prenumerationer till en snapshot eller transaktionspublikation

  1. När du har kört den lagrade proceduren som skapar prenumerationen kontrollerar du att du kör den lagrade proceduren som skapar ett distributionsagentjobb för att synkronisera prenumerationen. Vilken lagrad procedur du använder beror på typen av prenumeration.

Uppgradera skript som konfigurerar en sammanslagningspublikation

  1. (Valfritt) I det befintliga skriptet uppdaterar du körningen av sp_addmergepublication (Transact-SQL) för att ange eventuella värden som inte är standard för parametrar som implementerar nya replikeringsfunktioner.

  2. Efter sp_addmergepublication (Transact-SQL), kör du sp_addpublication_snapshot (Transact-SQL) på Publisher i publikationsdatabasen. Ange @publication och de Windows-autentiseringsuppgifter under vilka Ögonblicksbildsagenten körs för @job_name och @job_password. Om agenten använder SQL Server-autentisering när du ansluter till Publisher måste du också ange värdet 0 för @publisher_security_mode och SQL Server-inloggningsinformationen för @publisher_login och @publisher_password. Då skapas ett Snapshot Agent-jobb för publikationen.

  3. (Valfritt) Uppdatera körningen av sp_addmergearticle (Transact-SQL) för att ange eventuella icke-standardvärden för parametrar som implementerar nya replikeringsfunktioner.

Uppgradera skript som lägger till prenumerationer i en sammanslagningspublikation

  1. När du har kört den lagrade proceduren som skapar prenumerationen kontrollerar du att du kör den lagrade proceduren som skapar ett Sammanslagningsagent-jobb för att synkronisera prenumerationen. Vilken lagrad procedur du använder beror på typen av prenumeration.

Exempel

A. SQL Server 2000-skript för att skapa en transaktionspublikation

Följande är ett exempel på ett SQL Server 2000-skript (8.x) som skapar en transaktionspublikation för tabellen Produkt. Den här publikationen stöder omedelbar uppdatering med köuppdatering som redundans. Standardparametrar har tagits bort för läsbarhet.

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 och senare skript för att skapa en transaktionspublikation

Följande är ett exempel på uppgradering av det tidigare skriptet, som skapar en transaktionspublikation, för att köras korrekt för SQL Server 2005 (9.x) och senare versioner. Den här publikationen stöder omedelbar uppdatering med köuppdatering som redundans. Standardvärden för nya parametrar har uttryckligen deklarerats.

Anmärkning

Windows-uppgifter tillhandahålls under körning med sqlcmd-skriptvariabler.

-- 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-skript för att skapa en sammanslagningspublikation

Följande är ett exempel på ett SQL Server 2000-skript (8.x) som skapar en sammanslagningspublikation för tabellen Kunder. Standardparametrar har tagits bort för läsbarhet.

-- 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 och senare skript för att skapa en sammanslagningspublikation

Följande är ett exempel på det tidigare skriptet, som skapar en sammanslagningspublikation, uppgraderad för att köras korrekt för SQL Server 2005 (9.x) och senare versioner. Standardvärden för nya parametrar har uttryckligen deklarerats.

Anmärkning

Windows-uppgifter tillhandahålls under körning med sqlcmd-skriptvariabler.

-- 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-skript för att skapa en push-prenumeration till en transaktionspublikation

Följande är ett exempel på ett SQL Server 2000-skript (8.x) som skapar en push-prenumeration till en transaktionspublikation. Standardparametrar har tagits bort för läsbarhet.

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 och senare skript för att skapa en push-prenumeration till en transaktionspublikation

Följande är ett exempel på det tidigare skriptet, som skapar en push-prenumeration till en transaktionspublikation, uppgraderad för att köras korrekt för SQL Server 2005 (9.x) och senare versioner. Standardvärden för nya parametrar har uttryckligen deklarerats.

Anmärkning

Windows-uppgifter tillhandahålls under körning med sqlcmd-skriptvariabler.

-- 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-skript för att skapa en push-prenumeration till en sammanslagningspublikation

Följande är ett exempel på ett SQL Server 2000-skript (8.x) som skapar en push-prenumeration till en sammanslagningspublikation. Standardparametrar har tagits bort för läsbarhet.

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 och senare skript för att skapa en push-prenumeration till en sammanslagningspublikation

Följande är ett exempel på det tidigare skriptet, som skapar en push-prenumeration till en sammanslagningspublikation, uppgraderad för att köras korrekt för SQL Server 2005 (9.x) och senare versioner. Standardvärden för nya parametrar har uttryckligen deklarerats.

Anmärkning

Windows-uppgifter tillhandahålls under körning med sqlcmd-skriptvariabler.

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

Jag. SQL Server 2000-skript för att skapa en pull-prenumeration till en transaktionspublikation

Följande är ett exempel på ett SQL Server 2000-skript (8.x) som skapar en pull-prenumeration till en transaktionspublikation. Standardparametrar har tagits bort för läsbarhet.

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 och senare skript för att skapa en pull-prenumeration till en transaktionspublikation

Följande är ett exempel på det tidigare skriptet, som skapar en pull-prenumeration till en transaktionspublikation, uppgraderad för att köras korrekt för SQL Server 2005 (9.x) och senare versioner. Standardvärden för nya parametrar har uttryckligen deklarerats.

Anmärkning

Windows-uppgifter tillhandahålls under körning med sqlcmd-skriptvariabler.

-- 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-skript för att skapa en pull-prenumeration till en sammanslagningspublikation

Följande är ett exempel på ett SQL Server 2000-skript (8.x) som skapar en pull-prenumeration till en sammanslagningspublikation. Standardparametrar har tagits bort för läsbarhet.

-- 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 och senare skript för att skapa en pull-prenumeration till en sammanslagningspublikation

Följande är ett exempel på föregående skript, som skapar en pull-prenumeration till en sammanslagningspublikation, uppgraderad för att köras korrekt för SQL Server 2005 (9.x) och senare versioner. Standardvärden för nya parametrar har uttryckligen deklarerats.

Anmärkning

Windows-uppgifter tillhandahålls under körning med sqlcmd-skriptvariabler.

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