Udostępnij za pośrednictwem


Jak Tworzenie aktualizowalna subskrypcji transakcyjnych publikacji (Programowanie replikacji Transact-SQL)

Ostrzeżenie

Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.

replikacja transakcyjnej umożliwia zmiany wprowadzone na subskrybenta propagowane do Wydawca, natychmiastowe lub aktualizowanie subskrypcje w kolejce.Można utworzyć uaktualnienia subskrypcja programowo przy użyciu replikacja procedur przechowywanych.

Aby utworzyć bezpośrednie ściągania aktualizowaniasubskrypcja

  1. Wydawca, sprawdź, czy publikacja obsługuje natychmiastowego subskrypcje aktualizacji przez wykonywanie sp_helppublication.

  2. Wydawca, sprawdź, czy publikacja obsługuje ściągać subskrypcji przez wykonywanie sp_helppublication.

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

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

  3. Subskrybent, wykonać sp_addpullsubscription.Określ programu publisher @ i publikacja @, i jeden z następujących wartości @ update_mode:

    • synctran - enables the subscription for immediate updating.

    • Praca awaryjna -włącza subskrypcja do natychmiastowej aktualizacji w kolejce aktualizowania jako opcja pracy awaryjnej.

      Ostrzeżenie

      Praca awaryjna wymaga publikacja również włączenia kolejce subskrypcji aktualizacji.

  4. Subskrybent, wykonać sp_addpullsubscription_agent.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 są zawsze wykonywane przy użyciu poświadczenia systemu Windows określonego przez @ job_login i @ job_password.Agent dystrybucji powoduje zawsze połączenia lokalnego subskrybenta przy użyciu zintegrowanego uwierzytelniania systemu Windows.Domyślnie agent łą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).

  5. Subskrybent na baza danych subskrypcja, wykonać sp_link_publication.Określ programu publisher @, publikacja @, nazwa baza danych publikacja dla @ publisher_db, i jeden z następujących wartości @ security_mode:

    • 0 -Użyj SQL Server uwierzytelniania podczas aktualizacji Wydawca.Opcja ta wymaga określenia prawidłowego logowania Wydawca dla @ login i hasło @.

    • 1 -Za pomocą kontekstu zabezpieczeń użytkownika, wprowadzanie zmian przez subskrybenta, łącząc się z Wydawca.Zobacz sp_link_publication dla ograniczenia związane z tego trybu zabezpieczeń.

    • 2 -Użyj logowania serwer połączony istniejących, zdefiniowane przez użytkownika utworzone za pomocą sp_addlinkedserver.

  6. W programie publisher, należy wykonać sp_addsubscription Określanie publikacja @, @ subskrybent, @ destination_db, wartość ściągać dla @ subscription_typei tej samej wartości określonej w kroku 3 dla @ update_mode.

    Rejestruje to subskrypcja wciągana przez wydawcę.

Aby utworzyć bezpośrednie wypychania aktualizowaniasubskrypcja

  1. Wydawca, sprawdź, czy publikacja obsługuje natychmiastowego subskrypcje aktualizacji przez wykonywanie sp_helppublication.

  2. Wydawca, sprawdź, czy publikacja obsługuje wypychanie subskrypcji przez wykonywanie sp_helppublication.

    • Jeśli wartość allow_push w zestaw wyników jest 1, subskrypcji wypychanych obsługuje publikacja.

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

  3. Wydawca, należy wykonać sp_addsubscription.Określ publikacja @, @ subskrybent, @ destination_db, i jeden z następujących wartości @ update_mode:

    • synctran - enables support for immediate updating.

    • Praca awaryjna -włącza obsługę do natychmiastowej aktualizacji z aktualizacją kolejce jako opcja pracy awaryjnej.

      Ostrzeżenie

      Praca awaryjna wymaga publikacja również włączenia kolejce subskrypcji aktualizacji.

  4. Wydawca, należy wykonać sp_addpushsubscription_agent.Określić następujące parametry:

    • Subskrybent @, @ subscriber_db, i publikacja @.

    • 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 są zawsze wykonywane przy użyciu poświadczenia systemu Windows określonego 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.

    • (Opcjonalnie) Wartość 0 dla @ subscriber_security_mode i SQL Server informacji logowania dla @ subscriber_login i @ subscriber_password, jeśli konieczne jest użycie SQL Server uwierzytelniania 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).

  5. Subskrybent na baza danych subskrypcja, wykonać sp_link_publication.Określ programu publisher @, publikacja @, nazwa baza danych publikacja dla @ publisher_db, i jeden z następujących wartości @ security_mode:

    • 0 -Użyj SQL Server uwierzytelniania podczas aktualizacji Wydawca.Opcja ta wymaga określenia prawidłowego logowania Wydawca dla @ login i hasło @.

    • 1 -Za pomocą kontekstu zabezpieczeń użytkownika, wprowadzanie zmian przez subskrybenta, łącząc się z Wydawca.Zobacz sp_link_publication dla ograniczenia związane z tego trybu zabezpieczeń.

    • 2 -Użyj logowania serwer połączony istniejących, zdefiniowane przez użytkownika utworzone za pomocą sp_addlinkedserver.

Aby utworzyć kolejce aktualizacji replikacji ściąganejsubskrypcja

  1. Wydawca, sprawdź, czy publikacja obsługuje kolejce subskrypcje aktualizacji przez wykonywanie sp_helppublication.

  2. Wydawca, sprawdź, czy publikacja obsługuje ściągać subskrypcji przez wykonywanie sp_helppublication.

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

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

  3. Subskrybent, wykonać sp_addpullsubscription.Określ programu publisher @ i publikacja @, i jeden z następujących wartości @ update_mode:

    • w kolejce transakcji -włącza subskrypcja dla aktualizacji w kolejce.

    • w kolejce pracy awaryjnej -włącza obsługę dla aktualizowania natychmiastowej aktualizacji jako opcja pracy awaryjnej w kolejce.

      Ostrzeżenie

      w kolejce pracy awaryjnej wymaga publikacja również włączenia natychmiastowe aktualizowanie subskrypcji.Awaryjnie do natychmiastowej aktualizacji, należy użyć sp_link_publication do definiowania poświadczenia, w których zmiany subskrybent są replikowane w Wydawca.

  4. Subskrybent, wykonać sp_addpullsubscription_agent.Określić następujące parametry:

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

    • 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 są zawsze wykonywane przy użyciu poświadczenia systemu Windows określonego przez @ job_login i @ job_password.Agent dystrybucji powoduje zawsze połączenia lokalnego subskrybenta przy użyciu zintegrowanego uwierzytelniania systemu Windows.Domyślnie agent łączy się z dystrybutorem 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.

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

  5. Wydawca, należy wykonać sp_addsubscriber (języka Transact-SQL) zarejestrować abonenta Wydawca.

    W programie publisher, należy wykonać sp_addsubscription Określanie publikacja @, @ subskrybent, @ destination_db, wartość ściągać dla @ subscription_typei tej samej wartości określonej w kroku 3 dla @ update_mode.

    Rejestruje to subskrypcja wciągana przez wydawcę.

Aby utworzyć kolejce aktualizacji replikacji wypychanejsubskrypcja

  1. Wydawca, sprawdź, czy publikacja obsługuje kolejce subskrypcje aktualizacji przez wykonywanie sp_helppublication.

  2. Wydawca, sprawdź, czy publikacja obsługuje wypychanie subskrypcji przez wykonywanie sp_helppublication.

    • Jeśli wartość allow_push w zestaw wyników jest 1, subskrypcji wypychanych obsługuje publikacja.

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

  3. Wydawca, należy wykonać sp_addsubscription.Określ publikacja @, @ subskrybent, @ destination_db, i jeden z następujących wartości @ update_mode:

    • w kolejce transakcji -włącza subskrypcja dla aktualizacji w kolejce.

    • w kolejce pracy awaryjnej -włącza obsługę dla aktualizowania natychmiastowej aktualizacji jako opcja pracy awaryjnej w kolejce.

      Ostrzeżenie

      W kolejce pracy awaryjnej opcji wymaga publikacja również włączenia natychmiastowe aktualizowanie subskrypcji.Awaryjnie do natychmiastowej aktualizacji, należy użyć sp_link_publication do definiowania poświadczenia, w których zmiany subskrybent są replikowane w Wydawca.

  4. Wydawca, należy wykonać sp_addpushsubscription_agent.Określić następujące parametry:

    • Subskrybent @, @ subscriber_db, i publikacja @.

    • 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 są zawsze wykonywane przy użyciu poświadczenia systemu Windows określonego przez @ job_login i @ job_password.Agent dystrybucji powoduje zawsze połączenia lokalnego dystrybutora przy użyciu zintegrowanego uwierzytelniania systemu Windows.Domyślnie agent łą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, jeśli konieczne jest użycie SQL Server uwierzytelniania 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).

Przykład

W tym przykładzie tworzony natychmiastowej aktualizacji subskrypcja wciągana do publikacja, która obsługuje natychmiastowe aktualizowanie subskrypcji.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 @publicationDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'AdvWorksProductTran';
SET @publicationDB = N'AdventureWorks2008R2';
SET @publisher = $(PubServer);
SET @login = $(Login);
SET @password = $(Password);

-- At the subscription database, create a pull subscription to a transactional 
-- publication using immediate updating with queued updating as a failover.
EXEC sp_addpullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB, 
    @update_mode = N'failover', 
    @subscription_type = N'pull';

-- Add an agent job to synchronize the pull subscription, 
-- which uses Windows Authentication when connecting to the Distributor.
EXEC sp_addpullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication,
    @job_login = @login,
    @job_password = @password; 

-- Add a Windows Authentication-based linked server that enables the 
-- Subscriber-side triggers to make updates at the Publisher. 
EXEC sp_link_publication 
    @publisher = @publisher, 
    @publication = @publication,
    @publisher_db = @publicationDB, 
    @security_mode = 0,
    @login = @login,
    @password = @password;
GO

USE AdventureWorks2008R2;
GO

-- Execute this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @subscriber AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @subscriptionDB = N'AdventureWorks2008R2Replica'; 
SET @subscriber = $(SubServer);

-- At the Publisher, register the subscription, using the defaults.
USE [AdventureWorks2008R2]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'pull', 
    @update_mode = N'failover';
GO