Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
In diesem Thema wird beschrieben, wie Sie Aktualisierungsabonnements für transaktionale Veröffentlichungen in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL aktivieren.
Hinweis
Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.
Sicherheit
Fordern Sie Benutzer nach Möglichkeit auf, Sicherheitsanmeldeinformationen zur Laufzeit einzugeben. 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 auf der Seite Veröffentlichungstyp im Assistenten für neue Veröffentlichungen das Aktualisieren von Abonnements für Transaktionsveröffentlichungen.
Um aktualisierte Abonnements verwenden zu können, müssen Sie auch im Assistenten für neue Abonnements Optionen konfigurieren.
So aktivieren Sie aktualisierbare Abonnements
Wählen Sie im Assistenten für neue Veröffentlichung auf der Seite Veröffentlichungstyp die Option Transaktionsveröffentlichung mit aktualisierbaren Abonnementsaus.
Legen Sie auf der Seite Agentensicherheit zusätzlich zu den Sicherheitseinstellungen für den Momentaufnahme-Agent und den Protokolllese-Agent auch die Sicherheitseinstellungen für den Warteschlangenlese-Agent fest. 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
Erstellen Sie, falls notwendig, einen Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank.
Wenn für die Publikationsdatenbank bereits ein Log Reader Agent-Job vorhanden ist, fahren Sie mit Schritt 2 fort.
Wenn Sie sich nicht sicher sind, ob für eine veröffentlichte Datenbank ein Protokolllese-Agent-Auftrag vorhanden ist, führen Sie sp_helplogreader_agent (Transact-SQL) beim Publisher in der Veröffentlichungsdatenbank aus. Wenn die Ergebnismenge leer ist, muss ein Auftrag für den Protokolllese-Agent erstellt werden.
Führen Sie beim Publisher sp_addlogreader_agent (Transact-SQL) aus. Geben Sie die Microsoft Windows-Anmeldeinformationen, unter denen der Agent ausgeführt wird, für @job_name und @job_passwordan. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL Server-Authentifizierung verwendet, müssen Sie zudem den Wert 0 für @publisher_security_mode und die Microsoft SQL Server-Anmeldeinformationen für @publisher_login und @publisher_password angeben.
Führen Sie sp_addpublication (Transact-SQL) aus. Geben Sie dabei für den Parameter allow_sync_tran den Wert true an.
Führen Sie beim Verleger sp_addpublication_snapshot (Transact-SQL) aus. Geben Sie den in Schritt 2 für @publication verwendeten Veröffentlichungsnamen und die Windows-Anmeldeinformationen, unter denen der Momentaufnahme-Agent ausgeführt wird, für @job_name und @job_passwordan. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL Server-Authentifizierung verwendet, müssen Sie zudem den Wert 0 für @publisher_security_mode und die SQL Server-Anmeldeinformationen für @publisher_login und @publisher_password angeben. Dadurch wird ein Snapshot-Agent-Auftrag für die Publikation erstellt.
Fügen Sie der Veröffentlichung Artikel hinzu. Weitere Informationen finden Sie unter Definieren eines Artikels.
Erstellen Sie auf dem Abonnenten ein Abonnement mit Update für diese Veröffentlichung.
So erstellen Sie eine Veröffentlichung, die Abonnements mit verzögertem Update über eine Warteschlange unterstützt
Erstellen Sie, falls notwendig, einen Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank.
Wenn für die Publikationsdatenbank bereits ein Log Reader Agent-Job vorhanden ist, fahren Sie mit Schritt 2 fort.
Wenn Sie sich nicht sicher sind, ob für eine veröffentlichte Datenbank ein Protokolllese-Agent-Auftrag vorhanden ist, führen Sie sp_helplogreader_agent (Transact-SQL) beim Publisher in der Veröffentlichungsdatenbank aus. Wenn die Ergebnismenge leer ist, muss ein Log Reader-Agent-Auftrag erstellt werden.
Führen Sie beim Publisher sp_addlogreader_agent (Transact-SQL) aus. Geben Sie die Windows-Anmeldeinformationen, unter denen der Agent ausgeführt wird, für @job_name und @job_passwordan. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL Server-Authentifizierung verwendet, müssen Sie zudem den Wert 0 für @publisher_security_mode und die SQL Server-Anmeldeinformationen für @publisher_login und @publisher_password angeben.
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 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. Wenn das Resultset leer ist, muss ein Warteschlangenlese-Agentauftrag erstellt werden.
Führen Sie auf dem Verteiler sp_addqreader_agent (Transact-SQL) aus. Geben Sie die Windows-Anmeldeinformationen, unter denen der Agent ausgeführt wird, für @job_name und @job_passwordan. Diese Anmeldeinformationen werden verwendet, wenn der Queue Reader-Agent eine Verbindung zum Publisher und Subscriber herstellt. Weitere Informationen finden Sie unter Replication Agent Security Model.
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.
Führen Sie beim Verleger sp_addpublication_snapshot (Transact-SQL) aus. Geben Sie den in Schritt 3 für @publication verwendeten Veröffentlichungsnamen sowie die Windows-Anmeldeinformationen an, unter denen der Momentaufnahme-Agent ausgeführt wird, und zwar für @snapshot_job_name bzw. @password. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL Server-Authentifizierung verwendet, müssen Sie zudem den Wert 0 für @publisher_security_mode und die SQL Server-Anmeldeinformationen für @publisher_login und @publisher_password angeben. Dadurch wird ein Snapshot-Agent-Auftrag für die Publikation erstellt.
Fügen Sie der Veröffentlichung Artikel hinzu. Weitere Informationen finden Sie unter Definieren eines Artikels.
Erstellen Sie auf dem Abonnenten ein Abonnement mit Update für diese Veröffentlichung.
So ändern Sie die Konfliktrichtlinie für eine Veröffentlichung, die Abonnements mit verzögertem Update über eine Warteschlange zulässt
- Führen Sie beim Verleger in der Veröffentlichungsdatenbank sp_changepublication (Transact-SQL) aus. Geben Sie für @property den Wert conflict_policy und für @value den gewünschten Konfliktrichtlinienmodus pub wins, sub reinit oder sub wins an.
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'AdventureWorks2022';
SET @publication = N'AdvWorksProductTran';
SET @login = $(Login);
SET @password = $(Password);
USE [AdventureWorks2022]
-- 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 [AdventureWorks2022]
EXEC sp_addarticle
@publication = @publication,
@article = @article,
@source_table = @article,
@vertical_partition = N'false',
@type = N'logbased',
@source_owner = @owner,
@destination_owner = @owner;
GO