Udostępnij za pośrednictwem


Jak Uaktualnienie replikacji skryptów (Programowanie replikacji Transact-SQL)

Transact-SQL pliki skryptów można programowo skonfigurować topologia replikacja.Aby uzyskać więcej informacji, zobacz Pojęcia dotyczące procedury zapisanej w systemie replikacji.Jeśli jesteś element członkowski z sysadmin Rola serwera w stałej SQL Server 2005 i uruchom skrypty utworzone z replikacja SQL Server 2000, skrypty będą poprawnego.Jeśli jesteś element członkowski z db_owner stałej rola bazy danych lub innego, skrypty nie będzie błędów MSSQL_ENG021797 lub MSSQL_ENG021798 i muszą zostać uaktualnione.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Chociaż nie jest wymagane uaktualnienie skryptów wykonywanych przez członków sysadmin roli, firma Microsoft zaleca modyfikowania istniejących skryptów, jak opisano w temacie.Określ konto ma minimalne uprawnienia dla każdego agenta replikacja, zgodnie z opisem w "Uprawnień wymaganych przez agentów" sekcja tematu Model zabezpieczeń Agent replikacji.

Te udoskonalenia zabezpieczeń, które umożliwiają większą kontrolę nad uprawnieniami, umożliwiając jawnie określić Microsoft konta systemu Windows, w których replikacja wykonywane są zadania agenta, wpływa na następujące procedury przechowywane w istniejących skryptów:

  • sp_addpublication_snapshot:

    Teraz należy podać poświadczenia systemu Windows jako @ job_login i @ job_password podczas wykonywania sp_addpublication_snapshot (języka Transact-SQL) utworzyć zadanie, pod którym działa Agent migawki dystrybutora.

  • sp_addpushsubscription_agent:

    Należy teraz wykonać sp_addpushsubscription_agent (języka Transact-SQL) jawnie dodać zadanie poświadczenia systemu Windows (@ job_login i @ job_password) w obszarze zadania agenta dystrybucji uruchamia u dystrybutora.W wersjach SQL Server przed SQL Server 2005, to była wykonywana automatycznie podczas subskrypcja wypychana został utworzony.

  • sp_addmergepushsubscription_agent:

    Należy teraz wykonać sp_addmergepushsubscription_agent (języka Transact-SQL) jawnie dodać zadanie poświadczenia systemu Windows (@ job_login i @ job_password) w obszarze zadania agenta scalić uruchamia u dystrybutora.W wersjach SQL Server przed SQL Server 2005, to była wykonywana automatycznie podczas subskrypcja wypychana został utworzony.

  • sp_addpullsubscription_agent:

    Teraz należy podać poświadczenia systemu Windows jako @ job_login i @ job_password podczas wykonywania sp_addpullsubscription_agent (języka Transact-SQL) utworzyć zadanie, pod którym działa Agent dystrybucji subskrybenta.

  • sp_addmergepullsubscription_agent:

    Teraz należy podać poświadczenia systemu Windows jako @ job_login i @ job_password podczas wykonywania sp_addmergepullsubscription_agent (języka Transact-SQL) utworzyć zadanie, pod którym działa Agent scalić subskrybenta.

  • sp_addlogreader_agent:

    Należy teraz wykonać sp_addlogreader_agent (języka Transact-SQL) ręcznie dodać zadanie poświadczenia systemu Windows, pod którym Agent odczytywania dziennika uruchamia dystrybutora.W wersjach SQL Server przed SQL Server 2005, to była wykonywana automatycznie podczas tworzenia publikacja transakcyjnych.

  • sp_addqreader_agent:

    Należy teraz wykonać sp_addqreader_agent (języka Transact-SQL) ręcznie dodać zadanie poświadczenia systemu Windows, na jakich Agent czytnik kolejki jest uruchamiany na dystrybutora.W wersjach SQL Server przed SQL Server 2005, to była wykonywana automatycznie podczas tworzenia publikacja transakcyjnych obsługiwane w kolejce aktualizowania.

W modelu zabezpieczeń wprowadzonych w SQL Server 2005, agenci replikacja zawsze łączyć się z lokalnego wystąpienie SQL Server z uwierzytelniania systemu Windows przy użyciu poświadczenia dostarczonych w @ job_name i @ job_password.Informacje dotyczące wymagań kont systemu Windows używane po uruchomieniu zadania agenta replikacja, zobacz Model zabezpieczeń Agent replikacji.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Jeśli to możliwe, monitują użytkowników o wprowadzenie poświadczenia zabezpieczeń w czasie wykonywania.Jeśli poświadczenia są przechowywane w pliku skryptu, upewnij się, że sam plik jest zabezpieczony.

Aby uaktualnić skrypty, które Konfigurowanie migawka lub transakcyjnych publikacja

  1. W skrypcie istniejących przed sp_addpublication (języka Transact-SQL), wykonywania sp_addlogreader_agent (języka Transact-SQL) Wydawca na baza danych publikacja.Określ poświadczenia systemu Windows, w którym Agent odczytywania dziennika działa dla @ job_name i @ job_password.Jeśli będzie używać agenta SQL Server uwierzytelniania podczas łączenia się z Wydawca, należy także określić wartość 0 dla @ publisher_security_mode i SQL Server informacji logowania dla @ publisher_login i @ publisher_password.Tworzy to Agent odczytywania dziennika zadanie dla baza danych publikacji.

    Ostrzeżenie

    Ten krok jest tylko dla publikacji transakcyjnych i nie jest wymagane dla publikacji migawka.

  2. (Opcjonalnie) Przed sp_addpublication (języka Transact-SQL), wykonać sp_addqreader_agent (języka Transact-SQL) u dystrybutora w bazie danych dystrybucji.Określ poświadczenia systemu Windows, na jakich Agent czytnik kolejki jest uruchamiany dla @ job_name i @ job_password.Tworzy zadanie agenta czytnik kolejki dla dystrybutora.

    Ostrzeżenie

    Ten krok jest tylko wymagane transakcyjnych publikacji, które obsługują kolejce aktualizowania subskrybentów.

  3. (Opcjonalnie) Wykonywanie aktualizacji sp_addpublication (języka Transact-SQL) do zestaw wartości innych niż domyślne dla parametrów, które implementują nowe funkcje replikacja.

  4. Po sp_addpublication (języka Transact-SQL), wykonywania sp_addpublication_snapshot (języka Transact-SQL) Wydawca na baza danych publikacja.Określ publikacja @ i poświadczenia systemu Windows, na jakich Agent migawki jest uruchamiany dla @ job_name i @ job_password.Jeśli będzie używać agenta SQL Server uwierzytelniania podczas łączenia się z Wydawca, należy także określić wartość 0 dla @ publisher_security_mode i SQL Server informacji logowania dla @ publisher_login i @ publisher_password.Tworzy zadanie agenta migawkę w publikacja.

  5. (Opcjonalnie) Wykonywanie aktualizacji sp_addarticle (języka Transact-SQL) do zestaw wartości innych niż domyślne dla parametrów, które implementują nowe funkcje replikacja.

Aby uaktualnić skrypty, które subskrypcje programu migawka lub transakcyjnych publikacja

Aby uaktualnić skrypty, które Konfigurowanie publikacja seryjnej

  1. (Opcjonalnie) Wykonywanie aktualizacji istniejący skrypt sp_addmergepublication (języka Transact-SQL) do zestaw wartości innych niż domyślne dla parametrów, które implementują nowe funkcje replikacja.

  2. Po sp_addmergepublication (języka Transact-SQL), wykonywania sp_addpublication_snapshot (języka Transact-SQL) Wydawca na baza danych publikacja.Określ publikacja @ i poświadczenia systemu Windows, na jakich Agent migawki jest uruchamiany dla @ job_name i @ job_password.Jeśli będzie używać agenta SQL Server uwierzytelniania podczas łączenia się z Wydawca, należy także określić wartość 0 dla @ publisher_security_mode i SQL Server informacji logowania dla @ publisher_login i @ publisher_password.Tworzy zadanie agenta migawkę w publikacja.

  3. (Opcjonalnie) Wykonywanie aktualizacji sp_addmergearticle (języka Transact-SQL) do zestaw wartości innych niż domyślne dla parametrów, które implementują nowe funkcje replikacja.

Aby uaktualnić skrypty, które subskrypcje programu publikacja seryjnej

Przykład

Oto przykład SQL Server 2000 skrypt, który tworzy transakcyjnych publikacja dla tabela produktu.Ta publikacja obsługuje natychmiastowej aktualizacji z aktualizacją kolejce jako praca awaryjna.Domyślne parametry zostały usunięte dla czytelności.

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

Oto przykład uaktualniania poprzedni skrypt tworzy transakcyjnych publikacja, aby pomyślnie uruchomić dla SQL Server 2005 i nowsze wersje.Ta publikacja obsługuje natychmiastowej aktualizacji z aktualizacją kolejce jako praca awaryjna.Ustawienia domyślne dla nowych parametrów zostały zadeklarowane jawnie.

Ostrzeżenie

Dostarczone poświadczenia systemu Windows przy użyciu runtime polecenie sqlcmd wykonywanie skryptów zmiennych.

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

Oto przykład SQL Server 2000 skrypt, który tworzy publikacja korespondencji seryjnej do tabela Klienci.Domyślne parametry zostały usunięte dla czytelności.

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

Oto przykład poprzedni skrypt tworzy publikacja korespondencji seryjnej, uaktualniony pomyślnie uruchomić dla SQL Server 2005 i nowsze wersje.Ustawienia domyślne dla nowych parametrów zostały zadeklarowane jawnie.

Ostrzeżenie

Dostarczone poświadczenia systemu Windows przy użyciu runtime polecenie sqlcmd wykonywanie skryptów zmiennych.

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

Oto przykład SQL Server 2000 skrypt, który tworzy subskrypcja wypychana do publikacja transakcyjnych.Domyślne parametry zostały usunięte dla czytelności.

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

Oto przykład poprzedni skrypt tworzy subskrypcja wypychana do publikacja transakcyjnych i uaktualniony pomyślnie uruchomić dla SQL Server 2005 i nowsze wersje.Ustawienia domyślne dla nowych parametrów zostały zadeklarowane jawnie.

Ostrzeżenie

Dostarczone poświadczenia systemu Windows przy użyciu runtime polecenie sqlcmd wykonywanie skryptów zmiennych.

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

Oto przykład SQL Server 2000 skrypt, który tworzy subskrypcja wypychana do publikacja korespondencji seryjnej.Domyślne parametry zostały usunięte dla czytelności.

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

Oto przykład poprzedni skrypt tworzy subskrypcja wypychana do publikacja seryjnej Uaktualniono pomyślnie uruchomić dla SQL Server 2005 i nowsze wersje.Ustawienia domyślne dla nowych parametrów zostały zadeklarowane jawnie.

Ostrzeżenie

Dostarczone poświadczenia systemu Windows przy użyciu runtime polecenie sqlcmd wykonywanie skryptów zmiennych.

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

Oto przykład SQL Server 2000 skrypt, który tworzy subskrypcja wciągana do publikacja transakcyjnych.Domyślne parametry zostały usunięte dla czytelności.

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

Oto przykład poprzedni skrypt tworzy subskrypcja wciągana do publikacja transakcyjnych i uaktualniony pomyślnie uruchomić dla SQL Server 2005 i nowsze wersje.Ustawienia domyślne dla nowych parametrów zostały zadeklarowane jawnie.

Ostrzeżenie

Dostarczone poświadczenia systemu Windows przy użyciu runtime polecenie sqlcmd wykonywanie skryptów zmiennych.

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

Oto przykład SQL Server 2000 skrypt, który tworzy subskrypcja wciągana do publikacja korespondencji seryjnej.Domyślne parametry zostały usunięte dla czytelności.

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

Oto przykład poprzedni skrypt tworzy subskrypcja wciągana do publikacja seryjnej Uaktualniono pomyślnie uruchomić dla SQL Server 2005 i nowsze wersje.Ustawienia domyślne dla nowych parametrów zostały zadeklarowane jawnie.

Ostrzeżenie

Dostarczone poświadczenia systemu Windows przy użyciu runtime polecenie sqlcmd wykonywanie skryptów zmiennych.

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