Sdílet prostřednictvím


Vylepšení skriptů replikace (programování replikace Transact-SQL)

platí pro:SQL Serverazure SQL Managed Instance

Transact-SQL soubory skriptu lze použít k programové konfiguraci topologie replikace. Další informace naleznete v tématu Koncepty uložených procedur systému replikace.

Důležité

I když nemusíte upgradovat skripty, které spouští členové role sysadmin , doporučujeme upravit existující skripty, jak je popsáno v tomto tématu. Zadejte účet, který má minimální oprávnění pro každého agenta replikace, jak je popsáno v části Oprávnění vyžadovaná agenty tématu Model zabezpečení agenta replikace.

Tato vylepšení zabezpečení, která umožňují větší kontrolu nad oprávněními tím, že umožňují explicitně zadat účty Systému Microsoft Windows, pod kterými se spouští úlohy agenta replikace, ovlivňují následující uložené procedury v existujících skriptech:

  • sp_addpublication_snapshot:

    Teď byste měli zadat přihlašovací údaje systému Windows jako @job_login a @job_password při provádění sp_addpublication_snapshot (Transact-SQL) a vytvořit úlohu, ve které agent snímků běží na distributoru.

  • sp_addpushsubscription_agent:

    Teď byste měli spustit sp_addpushsubscription_agent (Transact-SQL) a explicitně přidat úlohu a zadat přihlašovací údaje systému Windows (@job_login a @job_password), pod kterými se úloha distribučního agenta spouští u distributora. Ve verzích SQL Serveru před SQL Serverem 2005 (9.x) se to provedlo automaticky při vytvoření nabízeného předplatného.

  • sp_addmergepushsubscription_agent:

    Teď byste měli spustit sp_addmergepushsubscription_agent (Transact-SQL) a explicitně přidat úlohu a zadat přihlašovací údaje systému Windows (@job_login a @job_password), pod kterými se úloha slučovacího agenta spouští u distributora. Ve verzích SQL Serveru před SQL Serverem 2005 (9.x) se to provedlo automaticky při vytvoření nabízeného předplatného.

  • sp_addpullsubscription_agent:

    Teď byste měli zadat přihlašovací údaje systému Windows jako @job_login a @job_password při provádění sp_addpullsubscription_agent (Transact-SQL) a vytvořit úlohu, ve které distribuční agent běží u odběratele.

  • sp_addmergepullsubscription_agent:

    Teď byste měli zadat přihlašovací údaje systému Windows jako @job_login a @job_password při provádění sp_addmergepullsubscription_agent (Transact-SQL) a vytvořit úlohu, ve které agent sloučení běží u odběratele.

  • sp_addlogreader_agent:

    Teď byste měli spustit sp_addlogreader_agent (Transact-SQL) a ručně přidat úlohu a zadat přihlašovací údaje systému Windows, pod kterými agent čtenáře protokolů běží na distributoru. Ve verzích SQL Serveru před SQL Serverem 2005 (9.x) se to provedlo automaticky při vytvoření transakční publikace.

  • sp_addqreader_agent:

    Teď byste měli spustit sp_addqreader_agent (Transact-SQL) a ručně přidat úlohu a zadat přihlašovací údaje systému Windows, pod kterými běží agent čtenáře fronty u distributora. Ve verzích SQL Serveru před SQL Serverem 2005 (9.x) se to provedlo automaticky při vytvoření transakční publikace, která podporovala aktualizaci ve frontě.

V modelu zabezpečení zavedeném v SQL Serveru 2005 (9.x) se agenti replikace vždy připojují k místní instanci SQL Serveru pomocí ověřování systému Windows a přihlašovacích údajů zadaných v @job_name a @job_password. Informace o požadavcích účtů Systému Windows používaných při spouštění úloh agenta replikace naleznete v tématu Model zabezpečení agenta replikace.

Důležité

Pokud je to možné, vyzve uživatele, aby za běhu zadali přihlašovací údaje zabezpečení. Pokud přihlašovací údaje ukládáte do souboru skriptu, ujistěte se, že je samotný soubor zabezpečený.

Aktualizovat skripty, které konfigurují snímek nebo transakční publikaci.

  1. V existujícím skriptu před sp_addpublication (Transact-SQL) spusťte sp_addlogreader_agent (Transact-SQL) v Publisheru v databázi publikace. Zadejte pověření systému Windows, pod kterými běží agent Čtenář protokolů pro @job_name a @job_password. Pokud agent při připojování k publisheru použije ověřování SYSTÉMU SQL Server, je nutné zadat také hodnotu 0 pro @publisher_security_mode a přihlašovací údaje systému SQL Server pro @publisher_login a @publisher_password. Tím se vytvoří úloha agenta Log Reader pro databázi publikace.

    Poznámka:

    Tento krok je určen pouze pro transakční publikace a není vyžadován pro snímkové publikace.

  2. (Volitelné) Před sp_addpublication (Transact-SQL)spusťte sp_addqreader_agent (Transact-SQL) u distributora v distribuční databázi. Zadejte přihlašovací údaje systému Windows, pod kterými běží agent čtenáře fronty pro @job_name a @job_password. Tím se vytvoří úloha agenta čtenáře fronty pro distributora.

    Poznámka:

    Tento krok se vyžaduje pouze pro transakční publikace, které podporují aktualizaci odběratelů ve frontě.

  3. (Volitelné) Aktualizujte provádění sp_addpublication (Transact-SQL), aby se pro parametry, které implementují nové funkce replikace, nastavily všechny jiné než výchozí hodnoty.

  4. Po sp_addpublication (Transact-SQL) spusťte sp_addpublication_snapshot (Transact-SQL) v Publisheru v databázi publikace. Zadejte @publication a přihlašovací údaje systému Windows, pod kterými běží agent snímků pro @job_name a @job_password. Pokud agent při připojování k publisheru použije ověřování SYSTÉMU SQL Server, je nutné zadat také hodnotu 0 pro @publisher_security_mode a přihlašovací údaje systému SQL Server pro @publisher_login a @publisher_password. Tím se pro publikaci vytvoří úloha agenta snímku.

  5. (Volitelné) Aktualizujte provádění sp_addarticle (Transact-SQL), aby se pro parametry, které implementují nové funkce replikace, nastavily všechny jiné než výchozí hodnoty.

Chcete-li aktualizovat skripty, které přidávají předplatné do snímku nebo transakční publikace

  1. Po spuštění uložené procedury, která vytvoří předplatné, ujistěte se, že spustíte uloženou proceduru, která vytvoří úlohu distribučního agenta pro synchronizaci předplatného. Uložená procedura, kterou použijete, bude záviset na typu předplatného.

Pro upgrade skriptů, které konfigurují sloučenou publikaci

  1. (Volitelné) V existujícím skriptu aktualizujte spuštění sp_addmergepublication (Transact-SQL), aby se pro parametry, které implementují nové funkce replikace, nastavily všechny jiné než výchozí hodnoty.

  2. Po sp_addmergepublication (Transact-SQL)spusťte sp_addpublication_snapshot (Transact-SQL) v Publisheru v databázi publikace. Zadejte @publication a přihlašovací údaje systému Windows, pod kterými běží agent snímků pro @job_name a @job_password. Pokud agent při připojování k publisheru použije ověřování SYSTÉMU SQL Server, je nutné zadat také hodnotu 0 pro @publisher_security_mode a přihlašovací údaje systému SQL Server pro @publisher_login a @publisher_password. Tím se pro publikaci vytvoří úloha agenta snímku.

  3. (Volitelné) Aktualizujte provádění sp_addmergearticle (Transact-SQL), aby se pro parametry, které implementují nové funkce replikace, nastavily všechny jiné než výchozí hodnoty.

Provedení upgradu skriptů, které přidávají předplatná do sloučené publikace

  1. Po spuštění uložené procedury, která vytvoří předplatné, ujistěte se, že spustíte uloženou proceduru, která vytvoří úlohu slučovacího agenta pro synchronizaci předplatného. Uložená procedura, kterou použijete, bude záviset na typu předplatného.

Příklady

A. Skript SQL Serveru 2000 pro vytvoření transakční publikace

Následuje příklad skriptu SYSTÉMU SQL Server 2000 (8.x), který vytvoří transakční publikaci pro tabulku Product. Tato publikace podporuje okamžitou aktualizaci a aktualizaci ve frontě jako záložní řešení v případě selhání. Výchozí parametry byly odebrány pro čitelnost.

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 a novější skript pro vytvoření transakční publikace

Následuje příklad upgradu předchozího skriptu, který vytvoří transakční publikaci, aby se úspěšně spustil pro SQL Server 2005 (9.x) a novější verze. Tato publikace podporuje okamžitou aktualizaci a aktualizaci ve frontě jako záložní řešení v případě selhání. Výchozí hodnoty pro nové parametry byly explicitně deklarovány.

Poznámka:

Přihlašovací údaje systému Windows se za běhu zadají pomocí skriptovacích proměnných 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. Skript SQL Serveru 2000 pro vytvoření sloučené publikace

Následuje příklad skriptu SQL Serveru 2000 (8.x), který vytvoří publikaci sloučení pro tabulku Customers. Výchozí parametry byly odebrány pro čitelnost.

-- 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 a novější skript pro vytvoření slučovací publikace

Následuje příklad předchozího skriptu, který vytvoří sloučenou publikaci, upgradoval se tak, aby úspěšně běžel pro SQL Server 2005 (9.x) a novější verze. Výchozí hodnoty pro nové parametry byly explicitně deklarovány.

Poznámka:

Přihlašovací údaje systému Windows se za běhu zadají pomocí skriptovacích proměnných 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. Skript SQL Serveru 2000 pro vytvoření push odběru do transakční publikace

Následuje příklad skriptu pro SQL Server 2000 (8.x), který vytvoří push odběr k transakční publikaci. Výchozí parametry byly odebrány pro čitelnost.

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 a novější skript pro vytvoření push odběru k transakční publikaci

Následuje příklad předchozího skriptu, který vytvoří odběr push oznámení na transakční publikaci, upravený tak, aby úspěšně fungoval na SQL Server 2005 (9.x) a novějších verzích. Výchozí hodnoty pro nové parametry byly explicitně deklarovány.

Poznámka:

Přihlašovací údaje systému Windows se za běhu zadají pomocí skriptovacích proměnných 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. Skript SQL Server 2000 pro vytvoření push odběru ke sloučení publikace

Následuje příklad skriptu SQL Serveru 2000 (8.x), který vytvoří push odběr do sloučovací publikace. Výchozí parametry byly odebrány pro čitelnost.

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 a vyšší verze skript pro vytvoření push odběru do slučovací publikace

Následuje příklad předchozího skriptu, který vytvoří odběr nabízených oznámení do sloučené publikace, upgradoval se tak, aby se úspěšně spustil pro SQL Server 2005 (9.x) a novější verze. Výchozí hodnoty pro nové parametry byly explicitně deklarovány.

Poznámka:

Přihlašovací údaje systému Windows se za běhu zadají pomocí skriptovacích proměnných 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

Já. Skript SQL Serveru 2000 pro vytvoření vyžádaného odběru k transakční publikaci

Následuje příklad skriptu SQL Serveru 2000 (8.x), který vytvoří odběr dat z transakční publikace. Výchozí parametry byly odebrány pro čitelnost.

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 a novější - skript pro vytvoření pull odběru na transakční publikaci

Následuje příklad předchozího skriptu, který vytvoří odběr transakční publikace a byl upraven, aby spolehlivě fungoval pro SQL Server 2005 (9.x) a novější verze. Výchozí hodnoty pro nové parametry byly explicitně deklarovány.

Poznámka:

Přihlašovací údaje systému Windows se za běhu zadají pomocí skriptovacích proměnných 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. Skript SQL Serveru 2000 pro vytvoření předplatného typu pull pro sloučenou publikaci

Následuje příklad skriptu pro SQL Server 2000 (8.x), který vytvoří odběr typu pull ke sloučené publikaci. Výchozí parametry byly odebrány pro čitelnost.

-- 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 nebo novější skript pro vytvoření odběru na sloučenou publikaci

Následuje příklad předchozího skriptu, který vytvoří odběr replikace sloučení a byl vylepšen, aby se úspěšně provozoval pro SQL Server 2005 (9.x) a novější verze. Výchozí hodnoty pro nové parametry byly explicitně deklarovány.

Poznámka:

Přihlašovací údaje systému Windows se za běhu zadají pomocí skriptovacích proměnných 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