Vorgehensweise: Aktivieren von aktualisierbaren Abonnements für Transaktionsveröffentlichungen (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.

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

SicherheitshinweisSicherheitshinweis

Benutzer sollten nach Möglichkeit dazu aufgefordert werden, Anmeldeinformationen zur Laufzeit einzugeben. Wenn Anmeldeinformationen in einer Skriptdatei gespeichert werden müssen, muss die Datei geschützt werden, um unberechtigte Zugriffe zu verhindern.

So erstellen Sie eine Veröffentlichung, die Abonnements mit sofortiger Aktualisierung unterstützt

  1. Erstellen Sie, wenn 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 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. Wenn das Resultset leer ist, muss ein Protokolllese-Agentauftrag erstellt werden.

    • Führen Sie auf dem Verleger sp_addlogreader_agent (Transact-SQL) aus. Geben Sie die Microsoft-Anmeldeinformationen, unter denen der Agent ausgeführt wird, für @job_name und @job_password an. 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.

  2. Führen Sie sp_addpublication (Transact-SQL) aus, und geben Sie dabei 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, unter denen der Snapshot-Agent ausgeführt wird, für @job_name und @job_password an. 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 Snapshot-Agentauftrag für die Veröffentlichung erstellt.

  4. Fügen Sie der Veröffentlichung Artikel hinzu. Weitere Informationen finden Sie unter Vorgehensweise: Definieren eines Artikels (Replikationsprogrammierung mit Transact-SQL).

  5. Erstellen Sie auf dem Abonnenten ein Abonnement mit Aktualisierung für diese Veröffentlichung. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen eines aktualisierbaren Abonnements für eine Transaktionsveröffentlichung (Replikationsprogrammierung mit Transact-SQL).

So erstellen Sie eine Veröffentlichung, die Abonnements mit verzögerter Aktualisierung 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 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. Wenn das Resultset leer ist, muss ein Protokolllese-Agentauftrag erstellt werden.

    • Führen Sie auf dem Verleger sp_addlogreader_agent (Transact-SQL) aus. Geben Sie die Windows-Anmeldeinformationen, unter denen der Agent ausgeführt wird, für @job_name und @job_password an. 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.

  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 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_password an. Diese Anmeldeinformationen werden verwendet, wenn der Warteschlangenlese-Agent eine Verbindung mit dem Verleger und dem Abonnenten herstellt. Weitere Informationen finden Sie unter Sicherheitsmodell des Replikations-Agents.

  3. Führen Sie sp_addpublication (Transact-SQL) aus, und geben Sie den Wert true für den Parameter @allow_queued_tran sowie einen der Werte pub wins, sub reinit 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, unter denen der Snapshot-Agent ausgeführt wird, für @snapshot_job_name und @job_password an. 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 Snapshot-Agentauftrag für die Veröffentlichung erstellt.

  5. Fügen Sie der Veröffentlichung Artikel hinzu. Weitere Informationen finden Sie unter Vorgehensweise: Definieren eines Artikels (Replikationsprogrammierung mit Transact-SQL).

  6. Erstellen Sie auf dem Abonnenten ein Abonnement mit Aktualisierung für diese Veröffentlichung. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen eines aktualisierbaren Abonnements für eine Transaktionsveröffentlichung (Replikationsprogrammierung mit Transact-SQL).

So ändern Sie die Konfliktrichtlinie für eine Veröffentlichung, die Abonnements mit verzögerter Aktualisierung zulässt

  • Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changepublication (Transact-SQL) aus. 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.

Beispiel

In diesem Beispiel wird eine Veröffentlichung erstellt, die sowohl sofortige als auch verzögerte 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'AdventureWorks2008R2'; 
SET @publication = N'AdvWorksProductTran'; 
SET @login = $(Login); 
SET @password = $(Password); 

USE [AdventureWorks2008R2]
-- 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 [AdventureWorks2008R2]
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @article, 
    @source_table = @article, 
    @vertical_partition = N'false', 
    @type = N'logbased',
    @source_owner = @owner, 
    @destination_owner = @owner;
GO