Aktivieren des Aktualisierens von Abonnements für Transaktionsveröffentlichungen

In diesem Thema wird beschrieben, wie Sie das Aktualisieren von Abonnements für Transaktionsveröffentlichungen in SQL Server 2014 mithilfe von SQL Server Management Studio oder Transact-SQL aktivieren.

Hinweis

Dieses Feature wird in einer künftigen Version von Microsoft SQL Server entfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

Vorbereitungen

Sicherheit

Benutzer sollten nach Möglichkeit dazu aufgefordert werden, Anmeldeinformationen zur Laufzeit anzugeben. Wenn Anmeldeinformationen in einer Skriptdatei gespeichert werden müssen, muss die Datei an einem sicheren Ort gespeichert werden, um unberechtigten Zugriff zu vermeiden.

Verwendung von SQL Server Management Studio

Aktivieren Sie aktualisierbare Abonnements für Transaktionsveröffentlichungen auf der Seite Veröffentlichungstyp des Assistenten für neue Veröffentlichung. Weitere Informationen zum Zugreifen auf diesen Assistenten finden Sie unter Erstellen einer Veröffentlichung. Nach der Erstellung einer Veröffentlichung ist das Aktivieren von aktualisierbaren Abonnements nicht mehr möglich.

Um aktualisierbare Abonnements verwenden zu können, müssen auch im Assistenten für neue Abonnements Optionen konfiguriert werden. Weitere Informationen finden Sie unter Erstellen eines aktualisierbaren Abonnements für eine Transaktionsveröffentlichung.

So aktivieren Sie aktualisierbare Abonnements

  1. Wählen Sie im Assistenten für neue Veröffentlichung auf der Seite Veröffentlichungstyp die Option Transaktionsveröffentlichung mit aktualisierbaren Abonnementsaus.

  2. Geben Sie auf der Seite Agentsicherheit neben den Sicherheitseinstellungen für den Momentaufnahme-Agent und den Protokolllese-Agent auch die Sicherheitseinstellungen für den Warteschlangenlese-Agent an. Weitere Informationen zu den Berechtigungen, die für das Konto erforderlich sind, unter dem der Warteschlangenlese-Agent ausgeführt wird, finden Sie unter Replication Agent Security Model.

    Hinweis

    Der Warteschlangenlese-Agent wird auch dann konfiguriert, wenn Sie lediglich Abonnements mit sofortigem Update verwenden.

Verwenden von Transact-SQL

Wenn Sie mithilfe von gespeicherten Replikationsprozeduren programmgesteuert eine Transaktionsveröffentlichung erstellen, können Sie das sofortige oder das verzögerte Aktualisieren der Abonnements aktivieren.

So erstellen Sie eine Veröffentlichung, die Abonnements mit sofortigem Update unterstützt

  1. Erstellen Sie, falls notwendig, einen Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank.

    • Wenn bereits ein Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank vorhanden ist, fahren Sie mit Schritt 2 fort.

    • Wenn Sie nicht sicher sind, ob ein Protokolllese-Agent-Auftrag für eine veröffentlichte Datenbank vorhanden ist, führen Sie sp_helplogreader_agent (Transact-SQL) auf dem Verleger in der Veröffentlichungsdatenbank aus. Wenn das Resultset leer ist, muss ein Protokolllese-Agentauftrag erstellt werden.

    • Führen Sie auf dem Herausgeber sp_addlogreader_agent (Transact-SQL) aus. Geben Sie die Microsoft Windows-Anmeldeinformationen an, unter denen der Agent für @job_name und @password ausgeführt wird. Wenn der Agent beim Herstellen einer Verbindung mit dem Verleger SQL Server Authentication verwendet, müssen Sie auch den Wert 0 für @publisher_security_mode und die Microsoft SQL Server-Anmeldeinformationen für @publisher_login und @publisher_password angeben.

  2. Führen Sie sp_addpublication (Transact-SQL) aus, und geben Sie den Wert true für den parameter @allow_sync_tran an.

  3. Führen Sie auf dem Verleger sp_addpublication_snapshot (Transact-SQL) aus. Geben Sie den in Schritt 2 für @publication verwendeten Veröffentlichungsnamen und die Windows-Anmeldeinformationen an, unter denen die Momentaufnahmen-Agent für @job_name und @password ausgeführt wird. Wenn der Agent beim Herstellen einer Verbindung mit dem Verleger SQL Server-Authentifizierung verwendet, müssen Sie auch den Wert 0 für @publisher_security_mode und die SQL Server Anmeldeinformationen für @publisher_login und @publisher_password angeben. Dadurch wird ein Auftrag des Momentaufnahme-Agents für die Veröffentlichung erstellt.

  4. Fügen Sie der Veröffentlichung Artikel hinzu. Weitere Informationen finden Sie unter Definieren eines Artikels.

  5. Erstellen Sie auf dem Abonnenten ein Abonnement mit Update für diese Veröffentlichung. Weitere Informationen finden Sie unter Erstellen eines aktualisierbaren Abonnements für eine Transaktionsveröffentlichung.

So erstellen Sie eine Veröffentlichung, die Abonnements mit verzögertem Update über eine Warteschlange unterstützt

  1. Erstellen Sie, falls notwendig, einen Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank.

    • Wenn bereits ein Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank vorhanden ist, fahren Sie mit Schritt 2 fort.

    • Wenn Sie nicht sicher sind, ob ein Protokolllese-Agent-Auftrag für eine veröffentlichte Datenbank vorhanden ist, führen Sie sp_helplogreader_agent (Transact-SQL) auf dem Verleger in der Veröffentlichungsdatenbank aus. Wenn das Resultset leer ist, muss ein Protokolllese-Agentauftrag erstellt werden.

    • Führen Sie auf dem Herausgeber sp_addlogreader_agent (Transact-SQL) aus. Geben Sie die Windows-Anmeldeinformationen an, unter denen der Agent für @job_name und @password ausgeführt wird. Wenn der Agent beim Herstellen einer Verbindung mit dem Verleger SQL Server-Authentifizierung verwendet, müssen Sie auch den Wert 0 für @publisher_security_mode und die SQL Server Anmeldeinformationen für @publisher_login und @publisher_password angeben.

  2. Erstellen Sie, falls notwendig, einen Warteschlangenlese-Agentauftrag für den Verteiler.

    • Wenn bereits ein Warteschlangenlese-Agentauftrag für die Verteilungsdatenbank vorhanden ist, fahren Sie mit Schritt 3 fort.

    • Wenn Sie nicht sicher sind, ob ein Warteschlangenlese-Agent-Auftrag für die Verteilungsdatenbank vorhanden ist, führen Sie sp_helpqreader_agent (Transact-SQL) am Verteiler in der Verteilungsdatenbank aus. Wenn das Resultset leer ist, muss ein Warteschlangenlese-Agentauftrag erstellt werden.

    • Führen Sie am Verteiler sp_addqreader_agent (Transact-SQL) aus. Geben Sie die Windows-Anmeldeinformationen an, unter denen der Agent für @job_name und @password ausgeführt wird. Diese Anmeldeinformationen werden verwendet, wenn der Warteschlangenlese-Agent eine Verbindung mit dem Verleger und dem Abonnenten herstellt. Weitere Informationen finden Sie unter Replication Agent Security Model.

  3. Führen Sie sp_addpublication (Transact-SQL) aus, und geben Sie den Wert true für den Parameter @allow_queued_tran und den Wert pub wins, sub reit oder sub wins für @conflict_policy an.

  4. Führen Sie auf dem Verleger sp_addpublication_snapshot (Transact-SQL) aus. Geben Sie den in Schritt 3 für @publication verwendeten Veröffentlichungsnamen und die Windows-Anmeldeinformationen an, unter denen die Momentaufnahmen-Agent für @snapshot_job_name und @password ausgeführt wird. Wenn der Agent beim Herstellen einer Verbindung mit dem Verleger SQL Server-Authentifizierung verwendet, müssen Sie auch den Wert 0 für @publisher_security_mode und die SQL Server Anmeldeinformationen für @publisher_login und @publisher_password angeben. Dadurch wird ein Auftrag des Momentaufnahme-Agents für die Veröffentlichung erstellt.

  5. Fügen Sie der Veröffentlichung Artikel hinzu. Weitere Informationen finden Sie unter Definieren eines Artikels.

  6. Erstellen Sie auf dem Abonnenten ein Abonnement mit Update für diese Veröffentlichung. Weitere Informationen finden Sie unter Erstellen eines aktualisierbaren Abonnements für eine Transaktionsveröffentlichung.

So ändern Sie die Konfliktrichtlinie für eine Veröffentlichung, die Abonnements mit verzögertem Update über eine Warteschlange zulässt

  1. Führen Sie auf dem Verleger in der Veröffentlichungsdatenbank sp_changepublication (Transact-SQL) aus. Geben Sie für @value den Wert conflict_policy für @property und den gewünschten Konfliktrichtlinienmodus für Pub wins, sub reit oder sub winsan.

Beispiel (Transact-SQL)

In diesem Beispiel wird eine Veröffentlichung erstellt, die sowohl sofortige als auch verzögerte Updates von Pullabonnements unterstützt.

-- To avoid storing the login and password in the script file, the values 
-- are passed into SQLCMD as scripting variables. 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".

--Declarations for adding a transactional publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2012'; 
SET @publication = N'AdvWorksProductTran'; 
SET @login = $(Login); 
SET @password = $(Password); 

USE [AdventureWorks]
-- Enable transactional replication on the publication 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;

-- Create a transactional publication that supports immediate updating, 
-- queued updating, and pull subscriptions. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_sync_tran = N'true', 
    @allow_queued_tran = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true',
  -- Explicitly declare the related default properties 
    @conflict_policy = N'pub wins';

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

--Declarations for adding an article.
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @owner AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product'; 
SET @owner = N'Production'; 

-- Add a horizontally and vertically filtered article for the Product table.
USE [AdventureWorks2012]
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @article, 
    @source_table = @article, 
    @vertical_partition = N'false', 
    @type = N'logbased',
    @source_owner = @owner, 
    @destination_owner = @owner;
GO

Weitere Informationen

Festlegen der Konfliktlösungsoptionen für verzögerte Updates über eine Warteschlange (SQL Server Management Studio)
Veröffentlichungstypen der Transaktionsreplikation
Updatable Subscriptions for Transactional Replication
Erstellen einer Veröffentlichung
Erstellen von aktualisierbaren Abonnements für eine Transaktionsveröffentlichung
Updatable Subscriptions for Transactional Replication
Verwenden von sqlcmd mit Skriptvariablen