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.
In diesem Thema wird beschrieben, wie Sie das Aktualisieren von Abonnements für Transaktionspublikationen in SQL Server 2014 mithilfe von SQL Server Management Studio oder Transact-SQL aktivieren.
Hinweis
Dieses Feature wird in einer zukünftigen Version von Microsoft SQL Server entfernt. Vermeiden Sie die Verwendung dieses Features in neuer Entwicklungsarbeit, und planen Sie, Anwendungen zu ändern, die derzeit dieses Feature verwenden.
Bevor Sie beginnen
Sicherheit
Wenn möglich, fordern Sie Benutzer auf, Zur Laufzeit Sicherheitsanmeldeinformationen einzugeben. Wenn Sie Anmeldeinformationen in einer Skriptdatei speichern müssen, müssen Sie die Datei schützen, um nicht autorisierten Zugriff zu verhindern.
Verwendung von SQL Server Management Studio
Aktivieren Sie das Aktualisieren von Abonnements für Transaktionspublikationen auf der Seite "Publikationstyp" des Assistenten für neue Publikationen. Weitere Informationen zur Verwendung dieses Assistenten finden Sie unter Erstellen einer Publikation. Sie können das Aktualisieren von Abonnements nach der Erstellung einer Publikation nicht aktivieren.
Um Abonnements zu aktualisieren, müssen Sie auch Optionen im Assistenten für neue Abonnements konfigurieren. Weitere Informationen finden Sie unter Erstellen eines aktualisierbaren Abonnements für eine transaktionsbasierte Publikation.
So aktivieren Sie das Aktualisieren von Abonnements
Wählen Sie auf der Seite " Publikationstyp " des Assistenten für neue Publikation die Option " Transaktionspublikation" mit aktualisierbaren Abonnements aus.
Geben Sie auf der Seite "Agent-Sicherheit" Sicherheitseinstellungen für den Warteschlangenleser-Agent sowie für den Snapshot-Agent und den Protokollleser-Agent an. Weitere Informationen zu den Berechtigungen, die für das Konto erforderlich sind, unter dem der Warteschlangenleser-Agent ausgeführt wird, finden Sie unter Replikations-Agent-Sicherheitsmodell.
Hinweis
Der Warteschlangenleser-Agent ist konfiguriert, selbst wenn Sie nur sofort aktualisierende Abonnements verwenden.
Verwenden von Transact-SQL
Beim programmgesteuerten Erstellen einer transaktionsgesteuerten Publikation mithilfe gespeicherter Replikationsprozeduren können Sie entweder das sofortige aktualisieren oder in die Warteschlange eingereihte Abonnements aktivieren.
So erstellen Sie eine Publikation, die das sofortige Aktualisieren von Abonnements unterstützt
Erstellen Sie bei Bedarf einen Protokolllese-Agent-Auftrag für die Publikationsdatenbank.
Wenn für die Publikationsdatenbank bereits ein Agent-Auftrag für den Protokollleser vorhanden ist, fahren Sie mit Schritt 2 fort.
Wenn Sie nicht sicher sind, ob für eine veröffentlichte Datenbank ein Auftrag für den Protokollleser-Agent vorhanden ist, führen Sie sp_helplogreader_agent (Transact-SQL) im Publisher in der Publikationsdatenbank aus. Wenn das Resultset leer ist, muss ein Agent-Auftrag für den Protokollleser erstellt werden.
Führen Sie sp_addlogreader_agent (Transact-SQL) am Herausgeber aus. Geben Sie die Microsoft Windows-Anmeldeinformationen an, unter denen der Agent für @job_name und @password ausgeführt wird. Wenn der Agent sql Server-Authentifizierung beim Herstellen einer Verbindung mit publisher 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.
Führen Sie sp_addpublication (Transact-SQL) aus, und geben Sie einen Wert von "true " für den Parameter @allow_sync_tran an.
Führen Sie im Publisher sp_addpublication_snapshot (Transact-SQL) aus. Geben Sie den in Schritt 2 für @publication verwendeten Publikationsnamen und die Windows-Anmeldeinformationen an, unter denen der Snapshot-Agent für @job_name und @password ausgeführt wird. Wenn der Agent sql Server-Authentifizierung beim Herstellen einer Verbindung mit Publisher 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 Snapshot-Agent-Job für die Publikation erstellt.
Fügen Sie der Publikation Artikel hinzu. Weitere Informationen finden Sie unter Definieren eines Artikels.
Erstellen Sie beim Abonnenten ein Aktualisierungsabonnement für diese Publikation. Weitere Informationen finden Sie unter Erstellen eines aktualisierbaren Abonnements für eine transaktionsbasierte Publikation.
So erstellen Sie eine Publikation, die das Anstehen von Aktualisierungen für Abonnements unterstützt
Erstellen Sie bei Bedarf einen Protokolllese-Agent-Auftrag für die Publikationsdatenbank.
Wenn für die Publikationsdatenbank bereits ein Agent-Auftrag für den Protokollleser vorhanden ist, fahren Sie mit Schritt 2 fort.
Wenn Sie nicht sicher sind, ob für eine veröffentlichte Datenbank ein Auftrag für den Protokollleser-Agent vorhanden ist, führen Sie sp_helplogreader_agent (Transact-SQL) im Publisher in der Publikationsdatenbank aus. Wenn das Resultset leer ist, muss ein Agent-Auftrag für den Protokollleser erstellt werden.
Führen Sie am 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 sql Server-Authentifizierung beim Herstellen einer Verbindung mit Publisher 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.
Erstellen Sie bei Bedarf einen Warteschlangenleser-Agent-Auftrag für den Distributor.
Wenn für die Verteilungsdatenbank bereits ein Warteschlangenlese-Agent-Auftrag 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) beim Distributor in der Verteilungsdatenbank aus. Wenn das Resultset leer ist, muss ein Warteschlangenlese-Agent-Auftrag erstellt werden.
Führen Sie beim Distributor 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 Warteschlangenleser-Agent eine Verbindung mit Publisher und Abonnenten herstellt. Weitere Informationen finden Sie unter Replikations-Agent-Sicherheitsmodell.
Führen Sie sp_addpublication (Transact-SQL) aus, und geben Sie einen Wert von "true " für den Parameter @allow_queued_tran und einen Wert von "pub wins", " sub reinit" oder "sub wins " für @conflict_policy an.
Führen Sie im Publisher sp_addpublication_snapshot (Transact-SQL) aus. Geben Sie den in Schritt 3 für @publication verwendeten Publikationsnamen und die Windows-Anmeldeinformationen an, unter denen der Snapshot-Agent für @snapshot_job_name und @password ausgeführt wird. Wenn der Agent sql Server-Authentifizierung beim Herstellen einer Verbindung mit Publisher 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 Snapshot-Agent-Job für die Publikation erstellt.
Fügen Sie der Publikation Artikel hinzu. Weitere Informationen finden Sie unter Definieren eines Artikels.
Erstellen Sie beim Abonnenten ein Aktualisierungsabonnement für diese Publikation. Weitere Informationen finden Sie unter Erstellen eines aktualisierbaren Abonnements für eine transaktionsbasierte Publikation.
So ändern Sie die Konfliktrichtlinie für eine Publikation, die das Aktualisieren von Abonnements in die Warteschlange ermöglicht
- Beim Publisher in der Publikationsdatenbank führen Sie sp_changepublication (Transact-SQL) aus. Geben Sie einen Wert von conflict_policy für @property und den gewünschten Konfliktrichtlinienmodus von pub wins, sub reinit oder sub wins für @value an.
Beispiel (Transact-SQL)
In diesem Beispiel wird eine Publikation erstellt, die sowohl sofortige als auch in die Warteschlange eingereihte Aktualisierung 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
Siehe auch
Konfliktlösungsoptionen für die Aktualisierung in der Warteschlange festlegen (SQL Server Management Studio)
Publikationstypen für die Transaktionsreplikation
Aktualisierbare Abonnements für Transaktionsreplikation
Erstellen einer Veröffentlichung
Erstellen Sie ein aktualisierbares Abonnement für eine transaktionale Veröffentlichung
Aktualisierbare Abonnements für Transaktionsreplikation
Verwenden von sqlcmd mit Skriptvariablen