Udostępnij za pośrednictwem


Jak Utwórz subskrypcję wypychaną (Programowanie replikacji Transact-SQL)

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

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

Jeśli to możliwe, uruchom monitowanie użytkowników o wprowadzenie poświadczenia zabezpieczeń w czas.Jeśli poświadczenia muszą być przechowywane w pliku skryptu, należy zabezpieczyć plik, aby uniemożliwić nieautoryzowany dostęp.

Aby utworzyć subskrypcja wypychana migawka lub transakcyjnych publikacja

  1. Wydawca bazy danych publikacji, sprawdź, czy publikacja obsługuje wypychanie subskrypcji przez wykonywanie sp_helppublication.

    • Jeśli wartość allow_wypychanie jest 1, wypychanie subskrypcje są obsługiwane.

    • Jeśli wartość allow_push jest 0, wykonać sp_changepublication, określanie allow_push dla @ Właściwość i true dla wartość @.

  2. Wydawca na baza danych publikacja, wykonanie sp_addsubscription.Określ publikacja @, @ subskrybent i @ destination_db.Określ wartość wypychanie dla @ subscription_type.Aby uzyskać informacje dotyczące subskrypcji aktualizacji, zobacz Jak Tworzenie aktualizowalna subskrypcji transakcyjnych publikacji (Programowanie replikacji Transact-SQL).

  3. Wydawca na baza danych publikacja, wykonanie sp_addpushsubscription_agent.Ustaw następujące opcje:

    • @ subskrybent, @ subscriber_db, i publikacja @ parametry.

    • Microsoft Poświadczenia systemu Windows, na jakich Agent dystrybucji na dystrybutora 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 dystrybutora przy użyciu zintegrowanego uwierzytelniania systemu Windows.Domyślnie agent połączy subskrybenta przy użyciu zintegrowanego uwierzytelniania systemu Windows.

    • (Optional) A value of 0 for @subscriber_security_mode and the Microsoft SQL Server login information for @subscriber_login and @subscriber_password.Te parametry należy używać uwierzytelniania programu SQL Server podczas łączenia się z subskrybenta.

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

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

    Podczas tworzenia subskrypcja wypychanej wydawca z dystrybutor zdalny, wartości dostarczone dla wszystkich parametrów, łącznie z job_login i job_password, są wysyłane do dystrybutora jako zwykły tekst.Należy zaszyfrować połączenie między wydawcy i jego dystrybutor zdalny przed wykonywania tej procedura składowana.Aby uzyskać więcej informacji, zobacz Szyfrowania połączeńSQL Server.

Aby utworzyć subskrypcja wypychana do publikacja korespondencji seryjnej

  1. Wydawca bazy danych publikacji, sprawdź, czy publikacja obsługuje wypychanie subskrypcji przez wykonywanie sp_helpmergepublication.

    • Jeśli wartość allow_wypychanie jest 1, obsługuje publikacja wypychanie subskrypcji.

    • Jeśli wartość allow_push nie jest 1, wykonać sp_changemergepublication, określanie allow_push dla @ Właściwość i true dla wartość @.

  2. Wydawca na baza danych publikacja, wykonanie sp_addmergesubscription, określając następujące parametry:

    • publikacja @.Jest to nazwa publikacja.

    • @ subscriber_type.Dla subskrypcja kliencka, określ lokalnego i subskrypcja serwerowa, należy określić global.

    • @ subscription_priority.W przypadku subskrypcja serwerowa należy określić priorytet dla subskrypcji (0,00 do 99.99).

      Aby uzyskać więcej informacji, zobacz Zaawansowane wykrywanie konfliktów replikacji scalania i rozdzielczości.

  3. Wydawca na baza danych publikacja, wykonanie sp_addmergepushsubscription_agent.Ustaw następujące opcje:

    • @ subskrybent, @ subscriber_db, i publikacja @ parametry.

    • Poświadczenia systemu Windows, na jakich Agent scalanie u dystrybutora 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 dystrybutora przy użyciu zintegrowanego uwierzytelniania systemu Windows.Domyślnie agent połączy subskrybenta przy użyciu zintegrowanego uwierzytelniania systemu Windows.

    • (Opcjonalnie) Wartość 0 dla @ subscriber_security_mode i SQL Server informacji logowania dla @ subscriber_login i @ subscriber_password.Te parametry należy używać uwierzytelniania programu SQL Server podczas łączenia się z subskrybenta.

    • (Opcjonalnie) Wartość 0 dla @ publisher_security_mode i SQL Server informacji logowania dla @ publisher_login i @ publisher_password.Określenie tych wartości, jeśli konieczne jest użycie uwierzytelniania programu SQL Server 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).

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

    Podczas tworzenia subskrypcja wypychanej wydawca z dystrybutor zdalny, wartości dostarczone dla wszystkich parametrów, łącznie z job_login i job_password, są wysyłane do dystrybutora jako zwykły tekst.Należy zaszyfrować połączenie między wydawcy i jego dystrybutor zdalny przed wykonywania tej procedura składowana.Aby uzyskać więcej informacji, zobacz Szyfrowania połączeńSQL Server.

Przykład

Poniższy przykład tworzy subskrypcja wypychana do publikacja transakcyjnych.Wartości login i hasło są dostarczane przy uruchomieniu czas za pomocą 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;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2008R2Replica';

--Add a push subscription to a transactional publication.
USE [AdventureWorks2008R2]
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

Poniższy przykład tworzy subskrypcja wypychana do publikacja korespondencji seryjnej.Wartości login i hasło są dostarczane przy uruchomieniu czas za pomocą 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 @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2008R2Replica'; 
SET @hostname = N'adventure-works\david8'

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

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