Vorgehensweise: Erstellen eines aktualisierbaren Abonnements für eine Transaktionsveröffentlichung (Replikationsprogrammierung mit Transact-SQL)

HinweisHinweis

Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird.

Bei einer Transaktionsreplikation können am Abonnenten vorgenommene Änderungen mithilfe sofort aktualisierbarer Abonnements oder Abonnements mit verzögerter Aktualisierung über eine Warteschlange an den Verleger zurückgegeben werden. Aktualisierbare Abonnements können mithilfe von gespeicherten Replikationsprozeduren programmgesteuert erstellt werden.

So erstellen Sie ein sofort aktualisierbares Pullabonnement

  1. Überprüfen Sie auf dem Verleger, ob die Veröffentlichung sofort aktualisierbare Abonnements unterstützt, indem Sie sp_helppublication ausführen.

  2. Überprüfen Sie auf dem Verleger, ob die Veröffentlichung Pullabonnements unterstützt, indem Sie sp_helppublication ausführen.

    • Wenn allow_pull im Resultset den Wert 1 hat, unterstützt die Veröffentlichung Pullabonnements.

    • Wenn allow_pull den Wert 0 hat, führen Sie sp_changepublication aus, und geben Sie allow_pull für @property und true für @value an.

  3. Führen Sie auf dem Abonnenten sp_addpullsubscription aus. Geben Sie @publisher und @publication sowie einen der folgenden Werte für @update_mode an:

    • synctran - Ermöglicht sofortige Aktualisierungen des Abonnements.

    • failover - Ermöglicht sofortige Aktualisierungen des Abonnements, wobei im Fehlerfall verzögerte Aktualisierungen über eine Warteschlange verwendet werden.

      HinweisHinweis

      failover erfordert, dass die Veröffentlichung auch verzögerte Aktualisierungen über eine Warteschlange zulässt.

  4. Führen Sie auf dem Abonnenten sp_addpullsubscription_agent aus. Geben Sie Folgendes an:

    • Die Parameter @publisher, @publisher_db und @publication

    • Die Microsoft Windows-Anmeldeinformationen, unter denen der Verteilungs-Agent auf dem Abonnenten ausgeführt wird, für @job_login und @job_password an.

      HinweisHinweis

      Für Verbindungen, die mit der integrierten Windows-Authentifizierung hergestellt werden, werden immer die mit @job_login und @job_password angegebenen Windows-Anmeldeinformationen verwendet. Der Verteilungs-Agent stellt die lokale Verbindung mit dem Abonnenten immer mithilfe der integrierten Windows-Authentifizierung her. Standardmäßig stellt der Agent mithilfe der integrierten Windows-Authentifizierung eine Verbindung mit dem Verteiler her.

    • (Optional) Den Wert 0 für @distributor_security_mode und die Microsoft SQL Server-Anmeldeinformationen für @distributor_login und @distributor_password, wenn die SQL Server-Authentifizierung für den Verbindungsaufbau mit dem Verteiler verwendet werden muss.

    • Einen Zeitplan für den Verteilungs-Agentauftrag für dieses Abonnement. Weitere Informationen finden Sie unter Vorgehensweise: Synchronisierungszeitpläne (Replikationsprogrammierung mit Transact-SQL).

  5. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_link_publication aus. Geben Sie @publisher, @publication, den Namen der Veröffentlichungsdatenbank für @publisher_db und einen der folgenden Werte für @security_mode an:

    • 0 – Verwenden Sie für Aktualisierungen beim Verleger die SQL Server-Authentifizierung. Diese Option erfordert auf dem Verleger die Angabe gültiger Anmeldeinformationen für @login und @password.

    • 1 - Verwenden Sie zum Verbindungsaufbau mit dem Verleger den Sicherheitskontext des Benutzers, der Änderungen am Abonnenten vornimmt. Nähere Informationen zu den in Verbindung mit diesem Sicherheitsmodus geltenden Beschränkungen finden Sie unter sp_link_publication.

    • 2 - Verwenden Sie einen vorhandenen benutzerdefinierten Anmeldenamen für den Verbindungsserver, der mit sp_addlinkedserver erstellt wurde.

  6. Führen Sie auf dem Verleger sp_addsubscription unter Angabe von @publication, @subscriber, @destination_db, den Wert pull für @subscription_type und dem gleichen Wert aus, den Sie in Schritt 3 für @update_mode angegeben haben.

    Damit wird das Pullabonnement beim Verleger registriert.

So erstellen Sie ein sofort aktualisierbares Pushabonnement

  1. Überprüfen Sie auf dem Verleger, ob die Veröffentlichung sofort aktualisierbare Abonnements unterstützt, indem Sie sp_helppublication ausführen.

  2. Überprüfen Sie auf dem Verleger, ob die Veröffentlichung Pushabonnements unterstützt, indem Sie sp_helppublication ausführen.

    • Wenn allow_push im Resultset den Wert 1 hat, unterstützt die Veröffentlichung Pushabonnements.

    • Wenn allow_push den Wert 0 hat, führen Sie sp_changepublication aus, und geben Sie allow_push für @property und true für @value an.

  3. Führen Sie auf dem Verleger sp_addsubscription aus. Geben Sie @publication, **@subscriber_, @destination_db** und einen der folgenden Werte für @update_mode an:

    • synctran - Aktiviert die Unterstützung für sofortige Aktualisierungen.

    • failover - Ermöglicht sofortige Aktualisierungen, wobei im Fehlerfall verzögerte Aktualisierungen über eine Warteschlange verwendet werden.

      HinweisHinweis

      failover erfordert, dass die Veröffentlichung auch Abonnements mit verzögerter Aktualisierung über eine Warteschlange zulässt.

  4. Führen Sie auf dem Verleger sp_addpushsubscription_agent aus. Geben Sie die folgenden Parameter an:

    • @subscriber, @subscriber_db und @publication.

    • Die Windows-Anmeldeinformationen, unter denen der Verteilungs-Agent beim Verteiler für @job_login und @job_password ausgeführt wird.

      HinweisHinweis

      Für Verbindungen, die mit der integrierten Windows-Authentifizierung hergestellt werden, werden immer die mit @job_login und @job_password angegebenen Windows-Anmeldeinformationen verwendet. Der Verteilungs-Agent stellt die lokale Verbindung mit dem Verteiler immer mithilfe der Windows-Authentifizierung her. Standardmäßig stellt der Agent mithilfe der integrierten Windows-Authentifizierung eine Verbindung mit dem Abonnenten her.

    • (Optional) Den Wert 0 für @subscriber_security_mode und die SQL Server-Anmeldeinformationen für @subscriber_login und @subscriber_password, wenn die SQL Server-Authentifizierung für den Verbindungsaufbau mit dem Abonnenten verwendet werden muss.

    • Einen Zeitplan für den Verteilungs-Agentauftrag für dieses Abonnement. Weitere Informationen finden Sie unter Vorgehensweise: Synchronisierungszeitpläne (Replikationsprogrammierung mit Transact-SQL).

  5. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_link_publication aus. Geben Sie @publisher, @publication, den Namen der Veröffentlichungsdatenbank für @publisher_db und einen der folgenden Werte für @security_mode an:

    • 0 – Verwenden Sie für Aktualisierungen beim Verleger die SQL Server-Authentifizierung. Diese Option erfordert auf dem Verleger die Angabe gültiger Anmeldeinformationen für @login und @password.

    • 1 - Verwenden Sie zum Verbindungsaufbau mit dem Verleger den Sicherheitskontext des Benutzers, der Änderungen am Abonnenten vornimmt. Nähere Informationen zu den in Verbindung mit diesem Sicherheitsmodus geltenden Beschränkungen finden Sie unter sp_link_publication.

    • 2 - Verwenden Sie einen vorhandenen benutzerdefinierten Anmeldenamen für den Verbindungsserver, der mit sp_addlinkedserver erstellt wurde.

So erstellen Sie ein Pullabonnement mit verzögerter Aktualisierung über eine Warteschlange

  1. Überprüfen Sie auf dem Verleger, ob die Veröffentlichung Abonnements mit verzögerter Aktualisierung über eine Warteschlange unterstützt, indem Sie sp_helppublication ausführen.

  2. Überprüfen Sie auf dem Verleger, ob die Veröffentlichung Pullabonnements unterstützt, indem Sie sp_helppublication ausführen.

    • Wenn allow_pull im Resultset den Wert 1 hat, unterstützt die Veröffentlichung Pullabonnements.

    • Wenn allow_pull den Wert 0 hat, führen Sie sp_changepublication aus, und geben Sie allow_pull für @property und true für @value an.

  3. Führen Sie auf dem Abonnenten sp_addpullsubscription aus. Geben Sie @publisher und @publication sowie einen der folgenden Werte für @update_mode an:

    • queued tran - Aktiviert das verzögerte Aktualisieren über eine Warteschlange für das Abonnement.

    • queued failover - Ermöglicht verzögerte Aktualisierungen über eine Warteschlange, wobei im Fehlerfall sofortige Aktualisierungen durchgeführt werden.

      HinweisHinweis

      queued failover erfordert, dass die Veröffentlichung auch sofort aktualisierbare Abonnements zulässt. Damit im Fehlerfall sofortige Aktualisierungen durchgeführt werden können, müssen Sie unter Verwendung von sp_link_publication die Anmeldeinformationen definieren, unter denen Änderungen am Abonnenten auf dem Verleger repliziert werden sollen.

  4. Führen Sie auf dem Abonnenten sp_addpullsubscription_agent aus. Geben Sie die folgenden Parameter an:

    • @publisher, @publisher_db und @publication

    • Die Windows-Anmeldeinformationen, unter denen der Verteilungs-Agent beim Abonnenten für @job_login und @job_password ausgeführt wird.

      HinweisHinweis

      Für Verbindungen, die mit der integrierten Windows-Authentifizierung hergestellt werden, werden immer die mit @job_login und @job_password angegebenen Windows-Anmeldeinformationen verwendet. Der Verteilungs-Agent stellt die lokale Verbindung mit dem Abonnenten immer mithilfe der integrierten Windows-Authentifizierung her. Standardmäßig stellt der Agent mithilfe der integrierten Windows-Authentifizierung eine Verbindung mit dem Verteiler her.

    • (Optional) Den Wert 0 für @distributor_security_mode und die SQL Server-Anmeldeinformationen für @distributor_login und @distributor_password, wenn die SQL Server-Authentifizierung für den Verbindungsaufbau mit dem Verteiler verwendet werden muss.

    • Einen Zeitplan für den Verteilungs-Agentauftrag für dieses Abonnement. Weitere Informationen finden Sie unter Vorgehensweise: Synchronisierungszeitpläne (Replikationsprogrammierung mit Transact-SQL).

  5. Führen Sie auf dem Verleger sp_addsubscriber (Transact-SQL) aus, um den Abonnenten auf dem Verleger zu registrieren.

    Führen Sie auf dem Verleger sp_addsubscription aus, und geben Sie dabei folgendes an: @publication, @subscriber, @destination_db, den Wert pull für @subscription_type und den gleichen Wert für @update_mode, den Sie in Schritt 3 angegeben haben.

    Damit wird das Pullabonnement beim Verleger registriert.

So erstellen Sie ein Pushabonnement mit verzögerter Aktualisierung über eine Warteschlange

  1. Überprüfen Sie auf dem Verleger, ob die Veröffentlichung Abonnements mit verzögerter Aktualisierung über eine Warteschlange unterstützt, indem Sie sp_helppublication ausführen.

  2. Überprüfen Sie auf dem Verleger, ob die Veröffentlichung Pushabonnements unterstützt, indem Sie sp_helppublication ausführen.

    • Wenn allow_push im Resultset den Wert 1 hat, unterstützt die Veröffentlichung Pushabonnements.

    • Wenn allow_push den Wert 0 hat, führen Sie sp_changepublication aus, und geben Sie allow_push für @property und true für @value an.

  3. Führen Sie auf dem Verleger sp_addsubscription aus. Geben Sie @publication, **@subscriber_, @destination_db** und einen der folgenden Werte für @update_mode an:

    • queued tran - Aktiviert das verzögerte Aktualisieren über eine Warteschlange für das Abonnement.

    • queued failover - Ermöglicht verzögerte Aktualisierungen über eine Warteschlange, wobei im Fehlerfall sofortige Aktualisierungen durchgeführt werden.

      HinweisHinweis

      Die Option queued failover erfordert, dass die Veröffentlichung auch sofort aktualisierbare Abonnements zulässt. Damit im Fehlerfall sofortige Aktualisierungen durchgeführt werden können, müssen Sie unter Verwendung von sp_link_publication die Anmeldeinformationen definieren, unter denen Änderungen am Abonnenten auf dem Verleger repliziert werden sollen.

  4. Führen Sie auf dem Verleger sp_addpushsubscription_agent aus. Geben Sie die folgenden Parameter an:

    • @subscriber, @subscriber_db und @publication.

    • Die Windows-Anmeldeinformationen, unter denen der Verteilungs-Agent beim Verteiler für @job_login und @job_password ausgeführt wird.

      HinweisHinweis

      Für Verbindungen, die mit der integrierten Windows-Authentifizierung hergestellt werden, werden immer die mit @job_login und @job_password angegebenen Windows-Anmeldeinformationen verwendet. Der Verteilungs-Agent stellt die lokale Verbindung mit dem Verteiler immer mithilfe der Windows-Authentifizierung her. Standardmäßig stellt der Agent mithilfe der integrierten Windows-Authentifizierung eine Verbindung mit dem Abonnenten her.

    • (Optional) Den Wert 0 für @subscriber_security_mode und die SQL Server-Anmeldeinformationen für @subscriber_login und @subscriber_password, wenn die SQL Server-Authentifizierung für den Verbindungsaufbau mit dem Abonnenten verwendet werden muss.

    • Einen Zeitplan für den Verteilungs-Agentauftrag für dieses Abonnement. Weitere Informationen finden Sie unter Vorgehensweise: Synchronisierungszeitpläne (Replikationsprogrammierung mit Transact-SQL).

Beispiel

In diesem Beispiel wird ein sofort aktualisierbares Abonnement für eine Veröffentlichung erstellt, die sofort aktualisierbare Abonnements unterstützt. Die Werte für den Anmeldenamen und das Kennwort werden zur Laufzeit mithilfe von sqlcmd-Skriptvariablen bereitgestellt.

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