Aktivieren des Aktualisierens von Abonnements für TransaktionsveröffentlichungenEnable Updating Subscriptions for Transactional Publications

Gilt für: JaSQL Server NeinAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

In diesem Thema wird beschrieben, wie das Aktualisieren von Abonnements für Transaktionsveröffentlichungen in SQL ServerSQL Server mit SQL Server Management StudioSQL Server Management Studio oder Transact-SQLTransact-SQLaktiviert wird.This topic describes how to enable updating subscriptions for transactional publications in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

HINWEIS!NOTE!! Dieses Feature befindet sich im Wartungsmodus und wird möglicherweise in einer künftigen Version von Microsoft SQL Server entfernt.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

VorbereitungenBefore You Begin

SicherheitSecurity

Benutzer sollten nach Möglichkeit dazu aufgefordert werden, Anmeldeinformationen zur Laufzeit anzugeben.When possible, prompt users to enter security credentials at runtime. Wenn Anmeldeinformationen in einer Skriptdatei gespeichert werden müssen, muss die Datei an einem sicheren Ort gespeichert werden, um unberechtigten Zugriff zu vermeiden.If you must store credentials in a script file, you must secure the file to prevent unauthorized access.

Verwenden von SQL Server Management StudioUsing SQL Server Management Studio

Aktivieren Sie aktualisierbare Abonnements für Transaktionsveröffentlichungen auf der Seite Veröffentlichungstyp des Assistenten für neue Veröffentlichung.Enable updating subscriptions for transactional publications on the Publication Type page of the New Publication Wizard.

Um aktualisierbare Abonnements verwenden zu können, müssen auch im Assistenten für neue Abonnements Optionen konfiguriert werden.To use updating subscriptions, you must also configure options in the New Subscription Wizard.

So aktivieren Sie aktualisierbare AbonnementsTo enable updating subscriptions

  1. Wählen Sie im Assistenten für neue Veröffentlichung auf der Seite Veröffentlichungstyp die Option Transaktionsveröffentlichung mit aktualisierbaren Abonnementsaus.On the Publication Type page of the New Publication Wizard, select Transactional publication with updatable subscriptions.

  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.On the Agent Security page, specify security settings for the Queue Reader Agent in addition to the Snapshot Agent and Log Reader Agent. 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.For more information about the permissions required for the account under which the Queue Reader Agent runs, see Replication Agent Security Model.

    HINWEIS: Der Warteschlangenlese-Agent wird auch dann konfiguriert, wenn Sie lediglich Abonnements mit sofortigem Update verwenden.NOTE: The Queue Reader Agent is configured even if you use only immediate updating subscriptions.

Verwenden von Transact-SQLUsing 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.When creating a transactional publication programmatically using replication stored procedures, you can enable either immediate or queued updating subscriptions.

So erstellen Sie eine Veröffentlichung, die Abonnements mit sofortigem Update unterstütztTo create a publication that supports immediate updating subscriptions

  1. Erstellen Sie, falls notwendig, einen Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank.If necessary, create a Log Reader Agent job for the publication database.

    • Wenn bereits ein Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank vorhanden ist, fahren Sie mit Schritt 2 fort.If a Log Reader Agent job already exists for the publication database, proceed to step 2.

    • Wenn Sie sich nicht sicher sind, ob ein Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank vorhanden ist, dann führen Sie sp_helplogreader_agent (Transact-SQL) auf dem Verleger für die Veröffentlichungsdatenbank aus.If you are unsure whether a Log Reader Agent job exists for a published database, execute sp_helplogreader_agent (Transact-SQL) at the Publisher on the publication database. Wenn das Resultset leer ist, muss ein Protokolllese-Agentauftrag erstellt werden.If the result set is empty, a Log Reader Agent job must be created.

    • Führen Sie auf dem Verleger sp_addlogreader_agent (Transact-SQL) aus.At the publisher, execute sp_addlogreader_agent (Transact-SQL). Geben Sie für @job_name und @password die MicrosoftMicrosoft Windows-Anmeldeinformationen an, unter denen der Agent ausgeführt wird.Specify the MicrosoftMicrosoft Windows credentials under which the agent runs for @job_name and @password. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL Server-Authentifizierung verwendet, müssen Sie zudem für @publisher_security_mode den Wert 0 und für @publisher_login und @publisher_password die MicrosoftMicrosoftSQL ServerSQL Server-Anmeldeinformationen angeben.If the agent will use SQL Server Authentication when connecting to the Publisher, you must also specify a value of 0 for @publisher_security_mode and the MicrosoftMicrosoft SQL ServerSQL Server login information for @publisher_login and @publisher_password.

  2. Führen Sie sp_addpublication (Transact-SQL) aus. Geben Sie dabei für den Parameter @allow_sync_tran den Wert true an.Execute sp_addpublication (Transact-SQL), specifying a value of true for the parameter @allow_sync_tran.

  3. Führen Sie auf dem Verleger sp_addpublication_snapshot (Transact-SQL) aus.At the Publisher, execute sp_addpublication_snapshot (Transact-SQL). Geben Sie den in Schritt 2 für @publication verwendeten Veröffentlichungsnamen und für @job_name und @password die Windows-Anmeldeinformationen an, unter denen der Momentaufnahmen-Agent ausgeführt wird.Specify the publication name used in step 2 for @publication and the Windows credentials under which the Snapshot Agent runs for @job_name and @password. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL Server-Authentifizierung verwendet, müssen Sie zudem für @publisher_security_mode den Wert 0 und für @publisher_login und @publisher_password die SQL ServerSQL Server-Anmeldeinformationen angeben.If the agent will use SQL Server Authentication when connecting to the Publisher, you must also specify a value of 0 for @publisher_security_mode and the SQL ServerSQL Server login information for @publisher_login and @publisher_password. Dadurch wird ein Auftrag des Momentaufnahme-Agents für die Veröffentlichung erstellt.This creates a Snapshot Agent job for the publication.

  4. Fügen Sie der Veröffentlichung Artikel hinzu.Add articles to the publication. Weitere Informationen finden Sie unter Definieren eines Artikels.For more information, see Define an Article.

  5. Erstellen Sie auf dem Abonnenten ein Abonnement mit Update für diese Veröffentlichung.At the Subscriber, create an updating subscription to this publication.

So erstellen Sie eine Veröffentlichung, die Abonnements mit verzögertem Update über eine Warteschlange unterstütztTo create a publication that supports queued updating subscriptions

  1. Erstellen Sie, falls notwendig, einen Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank.If necessary, create a Log Reader Agent job for the publication database.

    • Wenn bereits ein Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank vorhanden ist, fahren Sie mit Schritt 2 fort.If a Log Reader Agent job already exists for the publication database, proceed to step 2.

    • Wenn Sie sich nicht sicher sind, ob ein Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank vorhanden ist, dann führen Sie sp_helplogreader_agent (Transact-SQL) auf dem Verleger für die Veröffentlichungsdatenbank aus.If you are unsure whether a Log Reader Agent job exists for a published database, execute sp_helplogreader_agent (Transact-SQL) at the Publisher on the publication database. Wenn das Resultset leer ist, muss ein Protokolllese-Agentauftrag erstellt werden.If the result set is empty, then a Log Reader Agent job must be created.

    • Führen Sie auf dem Verleger sp_addlogreader_agent (Transact-SQL) aus.At the publisher, execute sp_addlogreader_agent (Transact-SQL). Geben Sie für @job_name und @password die Windows-Anmeldeinformationen an, unter denen der Agent ausgeführt wird.Specify the Windows credentials under which the agent runs for @job_name and @password. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL Server-Authentifizierung verwendet, müssen Sie zudem für @publisher_security_mode den Wert 0 und für @publisher_login und @publisher_password die SQL ServerSQL Server-Anmeldeinformationen angeben.If the agent will use SQL Server Authentication when connecting to the Publisher, you must also specify a value of 0 for @publisher_security_mode and the SQL ServerSQL Server login information for @publisher_login and @publisher_password.

  2. Erstellen Sie, falls notwendig, einen Warteschlangenlese-Agentauftrag für den Verteiler.If necessary, create a Queue Reader Agent job for the Distributor.

    • Wenn bereits ein Warteschlangenlese-Agentauftrag für die Verteilungsdatenbank vorhanden ist, fahren Sie mit Schritt 3 fort.If a Queue Reader Agent job already exists for the distribution database, proceed to step 3.

    • Wenn Sie sich nicht sicher sind, ob ein Warteschlangenlese-Agentauftrag für die Verteilungsdatenbank vorhanden ist, dann führen Sie sp_helpqreader_agent (Transact-SQL) auf dem Verteiler für die Verteilungsdatenbank aus.If you are unsure whether a Queue Reader Agent job exists for the distribution database, execute sp_helpqreader_agent (Transact-SQL) at the Distributor on the distribution database. Wenn das Resultset leer ist, muss ein Warteschlangenlese-Agentauftrag erstellt werden.If the result set is empty, then a Queue Reader Agent job must be created.

    • Führen Sie auf dem Verteiler sp_addqreader_agent (Transact-SQL) aus.At the Distributor, execute sp_addqreader_agent (Transact-SQL). Geben Sie für @job_name und @password die Windows-Anmeldeinformationen an, unter denen der Agent ausgeführt wird.Specify the Windows credentials under which the agent runs for @job_name and @password. Diese Anmeldeinformationen werden verwendet, wenn der Warteschlangenlese-Agent eine Verbindung mit dem Verleger und dem Abonnenten herstellt.These credentials are used when the Queue Reader Agent connects to the Publisher and Subscriber. Weitere Informationen finden Sie unter Replication Agent Security Model.For more information, see Replication Agent Security Model.

  3. Führen Sie sp_addpublication (Transact-SQL) aus. Geben Sie dabei den Wert true für den Parameter @allow_queued_tran und einen der Werte pub wins, sub reinit oder sub wins für @conflict_policy an.Execute sp_addpublication (Transact-SQL), specifying a value of true for the parameter @allow_queued_tran and a value of pub wins, sub reinit, or sub wins for @conflict_policy.

  4. Führen Sie auf dem Verleger sp_addpublication_snapshot (Transact-SQL) aus.At the Publisher, execute sp_addpublication_snapshot (Transact-SQL). Geben Sie den in Schritt 3 für @publication verwendeten Veröffentlichungsnamen und für @snapshot_job_name und @password die Windows-Anmeldeinformationen an, unter denen der Momentaufnahmen-Agent ausgeführt wird.Specify the publication name used in step 3 for @publication and the Windows credentials under which the Snapshot Agent runs for @snapshot_job_name and @password. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL Server-Authentifizierung verwendet, müssen Sie zudem für @publisher_security_mode den Wert 0 und für @publisher_login und @publisher_password die SQL ServerSQL Server-Anmeldeinformationen angeben.If the agent will use SQL Server Authentication when connecting to the Publisher, you must also specify a value of 0 for @publisher_security_mode and the SQL ServerSQL Server login information for @publisher_login and @publisher_password. Dadurch wird ein Auftrag des Momentaufnahme-Agents für die Veröffentlichung erstellt.This creates a Snapshot Agent job for the publication.

  5. Fügen Sie der Veröffentlichung Artikel hinzu.Add articles to the publication. Weitere Informationen finden Sie unter Definieren eines Artikels.For more information, see Define an Article.

  6. Erstellen Sie auf dem Abonnenten ein Abonnement mit Update für diese Veröffentlichung.At the Subscriber, create an updating subscription to this publication.

So ändern Sie die Konfliktrichtlinie für eine Veröffentlichung, die Abonnements mit verzögertem Update über eine Warteschlange zulässtTo change the conflict policy for a publication that allows queued updating subscriptions

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changepublication (Transact-SQL) aus.At the Publisher on the publication database, execute sp_changepublication (Transact-SQL). Geben Sie den Wert conflict_policy für @property sowie für die gewünschte Konfliktrichtlinie einen der Werte pub wins, sub reinit oder sub wins für @value an.Specify a value of conflict_policy for @property and the desired conflict policy mode of pub wins, sub reinit, or sub wins for @value.

Beispiel (Transact-SQL)Example (Transact-SQL)

In diesem Beispiel wird eine Veröffentlichung erstellt, die sowohl sofortige als auch verzögerte Updates von Pullabonnements unterstützt.This example creates a publication that supported both immediate and queued updating pull subscriptions.

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

Festlegen der Konfliktlösungsoptionen für verzögerte Updates über eine Warteschlange (SQL Server Management Studio) Set Queued Updating Conflict Resolution Options (SQL Server Management Studio)
Transaktionsreplikation Transactional Replication
Updatable Subscriptions for Transactional Replication Updatable Subscriptions for Transactional Replication
erstellen einer Veröffentlichung Create a Publication
Create an Updatable Subscription to a Transactional Publication Create an Updatable Subscription to a Transactional Publication
Updatable Subscriptions for Transactional Replication Updatable Subscriptions for Transactional Replication
Verwenden von „sqlcmd“ mit SkriptvariablenUse sqlcmd with Scripting Variables