Udostępnij za pośrednictwem


Jak Tworzenie subskrypcji ściąganej (Programowanie replikacji Transact-SQL)

Można utworzyć subskrypcji ściąganej programowo za pomocą procedur przechowywanych replikacja.Procedury przechowywane, używany będzie zależeć od typu publikacja, do której należy subskrypcja.

Aby utworzyć subskrypcja wciągana migawka lub transakcyjnych publikacja

  1. Wydawca, sprawdź, czy publikacja obsługuje ściągać subskrypcji przez wykonywanie sp_helppublication (języka Transact-SQL).

    • Jeśli wartość allow_pull w zestaw wyników jest 1, a następnie publikacja obsługuje subskrypcji ściąganej.

    • Jeśli wartość allow_pull jest 0, wykonać sp_changepublication (języka Transact-SQL), określając allow_pull dla @ Właściwość i true dla wartość @.

  2. Subskrybent, wykonać sp_addpullsubscription (języka Transact-SQL).Określ programu publisher @ i publikacja @.Dla informacji o subskrypcji, zobacz Jak Tworzenie aktualizowalna subskrypcji transakcyjnych publikacji (Programowanie replikacji Transact-SQL).

  3. Subskrybent, wykonać sp_addpullsubscription_agent (języka Transact-SQL).Ustaw następujące opcje:

    • Programu publisher @, @ publisher_db, i publikacja @ parametry.

    • Microsoft Poświadczenia systemu Windows, na jakich Agent dystrybucji subskrybent działa dla @ job_login i @ job_password.

      Ostrzeżenie

      Połączenia realizowane przy użyciu zintegrowanego uwierzytelniania systemu Windows zawsze Użyj poświadczenia systemu Windows, określonej przez @ job_login i @ job_password.Agent dystrybucji powoduje zawsze połączenia lokalnego subskrybenta przy użyciu zintegrowanego uwierzytelniania systemu Windows.Domyślnie agent połączy się z dystrybutorem przy użyciu zintegrowanego uwierzytelniania systemu Windows.

    • (Optional) A value of 0 for @distributor_security_mode and the Microsoft SQL Server login information for @distributor_login and @distributor_password, if you need to use SQL Server Authentication when connecting to the Distributor.

    • Harmonogram dla zadanie agenta dystrybucji dla tej subskrypcja.Aby uzyskać więcej informacji, zobacz Jak Określ harmonogramy synchronizacji (Programowanie replikacji Transact-SQL).

  4. Wydawca, należy wykonać sp_addsubscription (języka Transact-SQL) zarejestrować subskrypcja wciągana.Określ publikacja @, @ subskrybent, i @ destination_db.Określ wartość ściągać dla @ subscription_type.

Aby utworzyć subskrypcja wciągana do publikacja korespondencji seryjnej

  1. Wydawca, sprawdź, czy publikacja obsługuje ściągać subskrypcji przez wykonywanie sp_helpmergepublication (języka Transact-SQL).

    • Jeśli wartość allow_pull w zestaw wyników jest 1, a następnie publikacja obsługuje subskrypcji ściąganej.

    • Jeśli wartość allow_pull jest 0, wykonać sp_changemergepublication (języka Transact-SQL), określając allow_pull dla @ Właściwość i true dla wartość @.

  2. Subskrybent, wykonać sp_addmergepullsubscription (języka Transact-SQL).Określ programu publisher @, @ publisher_db, **publikacja @**oraz następujące parametry:

  3. Subskrybent, wykonać sp_addmergepullsubscription_agent (języka Transact-SQL).Określić następujące parametry:

    • program publisher @, @ publisher_db, i publikacja @.

    • Poświadczenia systemu Windows, na jakich Agent scalić subskrybent działa dla @ job_login i @ job_password.

      Ostrzeżenie

      Połączenia realizowane przy użyciu zintegrowanego uwierzytelniania systemu Windows zawsze Użyj poświadczenia systemu Windows, określonej przez @ job_login i @ job_password.Agent scalić powoduje zawsze połączenia lokalnego subskrybenta przy użyciu zintegrowanego uwierzytelniania systemu Windows.Domyślnie agent połączy się z dystrybutorem i Wydawca przy użyciu zintegrowanego uwierzytelniania systemu Windows.

    • (Opcjonalnie) Wartość 0 dla @ distributor_security_mode i SQL Server informacji logowania dla @ distributor_login i @ distributor_password, jeśli konieczne jest użycie SQL Server uwierzytelniania podczas łączenia się z dystrybutorem.

    • (Opcjonalnie) Wartość 0 dla @ publisher_security_mode i SQL Server informacji logowania dla @ publisher_login i @ publisher_password, jeśli konieczne jest użycie SQL Server uwierzytelniania podczas łączenia się z Wydawca.

    • Harmonogram dla zadanie agenta scalania dla tej subskrypcja.Aby uzyskać więcej informacji, zobacz Jak Określ harmonogramy synchronizacji (Programowanie replikacji Transact-SQL).

  4. Wydawca, należy wykonać sp_addmergesubscription (języka Transact-SQL).Określ publikacja @, @ subskrybent, @ subscriber_db, a wartość ściągać dla @ subscription_type.Rejestruje to subskrypcja wciągana.

Przykład

Poniższy przykład tworzy subskrypcja wciągana do publikacja transakcyjnych.Pierwsza partia jest wykonywany przez subskrybenta i drugiej instancji jest wykonywana na Wydawca.Wartości login i hasło są dostarczane w czasie wykonywania za pomocą zmiennych wykonywanie skryptów polecenie 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 this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2008R2';

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

-- 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
-- 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 this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2008R2Replica';

-- At the Publisher, register the subscription, using the defaults.
EXEC sp_addsubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @destination_db = @subscriptionDB, 
  @subscription_type = N'pull',
  @status = N'subscribed';
GO

Poniższy przykład tworzy subskrypcja wciągana do publikacja korespondencji seryjnej.Pierwsza partia jest wykonywany przez subskrybenta i drugiej instancji jest wykonywana na Wydawca.Wartości login i hasło są dostarczane w czasie wykonywania za pomocą zmiennych wykonywanie skryptów polecenie 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 this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2008R2';
SET @hostname = N'adventure-works\david8';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2008R2Replica]
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),
  @hostname = @hostname;
GO
-- Execute this batch at the Publisher.
DECLARE @myMergePub  AS sysname;
DECLARE @mySub       AS sysname;
DECLARE @mySubDB     AS sysname;

SET @myMergePub = N'AdvWorksSalesOrdersMerge';
SET @mySub = N'MYSUBSERVER';
SET @mySubDB = N'AdventureWorks2008R2Replica';

-- At the Publisher, register the subscription, using the defaults.
USE [AdventureWorks2008R2]
EXEC sp_addmergesubscription @publication = @myMergePub, 
@subscriber = @mySub, @subscriber_db = @mySubDB, 
@subscription_type = N'pull';
GO