Share via


Vorgehensweise: Konfigurieren von Snapshoteigenschaften (Replikationsprogrammierung mit Transact-SQL)

Snapshoteigenschaften können mithilfe gespeicherter Replikationsprozeduren programmgesteuert definiert und geändert werden. Welche gespeicherten Prozeduren verwendet werden, hängt vom Typ der Veröffentlichung ab.

So konfigurieren Sie Snapshoteigenschaften beim Erstellen eines Snapshots oder einer Transaktionsveröffentlichung

  • Führen Sie auf dem Verleger sp_addpublication aus. Geben Sie einen Veröffentlichungsnamen für @publication, den Wert snapshot oder continuous für @repl_freq und einen oder mehrere der folgenden Snapshotparameter an:

    • @alt_snapshot_folder – Geben Sie einen Pfad an, wenn von diesem Speicherort, anstatt vom Standardsnapshotordner oder zusätzlich zu diesem, auf den Snapshot für diese Veröffentlichung zugegriffen wird.

    • @compress_snapshot – Geben Sie den Wert true an, wenn die Snapshotdateien im alternativen Snapshotordner im Microsoft CAB-Dateiformat komprimiert sind.

    • @pre_snapshot_script – Geben Sie den Dateinamen und den vollständigen Pfad einer .sql-Datei an, die während der Initialisierung auf dem Abonnenten ausgeführt wird, bevor der Anfangssnapshot angewendet wird.

    • @post_snapshot_script – Geben Sie den Dateinamen und den vollständigen Pfad einer .sql-Datei an, die während der Initialisierung auf dem Abonnenten ausgeführt wird, nachdem der Anfangssnapshot angewendet wurde.

    • @snapshot_in_defaultfolder – Geben Sie den Wert false an, wenn der Snapshot nur in einem anderen als dem Standardverzeichnis verfügbar ist.

    Weitere Informationen zum Erstellen von Veröffentlichungen finden Sie unter Vorgehensweise: Erstellen einer Veröffentlichung (Replikationsprogrammierung mit Transact-SQL).

So konfigurieren Sie Snapshoteigenschaften beim Erstellen eines Snapshots oder einer Mergeveröffentlichung

  1. Führen Sie auf dem Verleger sp_addmergepublication aus. Geben Sie einen Veröffentlichungsnamen für @publication, den Wert snapshot oder continuous für @repl_freq und einen oder mehrere der folgenden Snapshotparameter ein:

    • @alt_snapshot_folder – Geben Sie einen Pfad an, wenn von diesem Speicherort, anstatt vom Standardsnapshotordner oder zusätzlich zu diesem, auf den Snapshot für diese Veröffentlichung zugegriffen wird.

    • @compress_snapshot – Geben Sie den Wert true an, wenn die Snapshotdateien im alternativen Snapshotordner im CAB-Dateiformat komprimiert sind.

    • @pre_snapshot_script – Geben Sie den Dateinamen und den vollständigen Pfad einer .sql-Datei an, die während der Initialisierung auf dem Abonnenten ausgeführt wird, bevor der Anfangssnapshot angewendet wird.

    • @post_snapshot_script – Geben Sie den Dateinamen und den vollständigen Pfad einer .sql-Datei an, die während der Initialisierung auf dem Abonnenten ausgeführt wird, nachdem der Anfangssnapshot angewendet wurde.

    • @snapshot_in_defaultfolder – Geben Sie den Wert false an, wenn der Snapshot nur in einem anderen als dem Standardverzeichnis verfügbar ist.

  2. Weitere Informationen zum Erstellen von Veröffentlichungen finden Sie unter Vorgehensweise: Erstellen einer Veröffentlichung (Replikationsprogrammierung mit Transact-SQL).

So ändern Sie die Snapshoteigenschaften eines bestehenden Snapshots oder einer bestehenden Transaktionsveröffentlichung

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changepublication aus. Geben Sie den Wert 1 für @force_invalidate_snapshot und einen der folgenden Werte für @property an:

    • alt_snapshot_folder – Geben Sie zudem einen neuen Pfad zum alternativen Snapshotordner für @value an.

    • compress_snapshot – Geben Sie außerdem entweder true oder false für @value an, um zu definieren, ob die Snapshotdateien im alternativen Snapshotordner im CAB-Dateiformat komprimiert sind.

    • pre_snapshot_script – Geben Sie außerdem für @value den Dateinamen und den vollständigen Pfad einer .sql-Datei an, die während der Initialisierung auf dem Abonnenten ausgeführt wird, bevor der Anfangssnapshot angewendet wird.

    • post_snapshot_script – Geben Sie außerdem für @value den Dateinamen und den vollständigen Pfad einer .sql-Datei an, die während der Initialisierung auf dem Abonnenten ausgeführt wird, nachdem der Anfangssnapshot angewendet wurde.

    • snapshot_in_defaultfolder – Geben Sie außerdem den Wert true oder false an, um zu definieren, ob der Snapshot an einem anderen als dem Standardspeicherort verfügbar ist.

  2. (Optional) Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changepublication_snapshot aus. Geben Sie @publication und einen oder mehrere der zu ändernden Parameter für die Zeitplanung oder Sicherheitsanmeldeinformationen an.

    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.

  3. Führen Sie den Replikationssnapshot-Agent von der Eingabeaufforderung aus, oder starten Sie den Snapshot-Agentauftrag, um einen neuen Snapshot zu erzeugen. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen des Anfangssnapshots (Replikationsprogrammierung mit Transact-SQL).

So ändern Sie die Snapshoteigenschaften einer bestehenden Mergeveröffentlichung

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changemergepublication aus. Geben Sie den Wert 1 für @force_invalidate_snapshot und einen der folgenden Werte für @property an:

    • alt_snapshot_folder – Geben Sie außerdem einen neuen Pfad zum alternativen Snapshotordner für @value an.

    • compress_snapshot – Geben Sie außerdem entweder true oder false für @value an, um zu definieren, ob die Snapshotdateien im alternativen Snapshotordner im CAB-Dateiformat komprimiert sind.

    • pre_snapshot_script – Geben Sie außerdem für @value den Dateinamen und den vollständigen Pfad einer .sql-Datei an, die während der Initialisierung auf dem Abonnenten ausgeführt wird, bevor der Anfangssnapshot angewendet wird.

    • post_snapshot_script – Geben Sie außerdem für @value den Dateinamen und den vollständigen Pfad einer .sql-Datei an, die während der Initialisierung auf dem Abonnenten ausgeführt wird, nachdem der Anfangssnapshot angewendet wurde.

    • snapshot_in_defaultfolder – Geben Sie außerdem den Wert true oder false an, um zu definieren, ob der Snapshot an einem anderen als dem Standardspeicherort verfügbar ist.

  2. Führen Sie den Replikationssnapshot-Agent von der Eingabeaufforderung aus, oder starten Sie den Snapshot-Agentauftrag, um einen neuen Snapshot zu erzeugen. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen des Anfangssnapshots (Replikationsprogrammierung mit Transact-SQL).

Beispiel

In diesem Beispiel wird eine Veröffentlichung erstellt, die einen alternativen Snapshotordner und einen komprimierten Snapshot verwendet.

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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 merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @owner AS sysname;
DECLARE @snapshot_share AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksSalesOrdersMergeAltSnapshot'; 
SET @article = N'SpecialOffer';
SET @owner = N'Sales';
SET @snapshot_share = '\\' + $(InstanceName) + '\AltSnapshotFolder';

-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname=N'merge publish',
    @value = N'true';

-- Create new merge publication with an alternate snapshot location. 
USE [AdventureWorks]
EXEC sp_addmergepublication 
-- required parameters
    @publication = @publication, 
    @snapshot_in_defaultfolder = N'false',
    @alt_snapshot_folder = @snapshot_share,
    @compress_snapshot = N'true';

-- Create the snapshot job for the publication.
EXEC sp_addpublication_snapshot 
    @publication = @publication,
    @job_login = $(Login),
    @job_password = $(Password);

-- Add an article.
EXEC sp_addmergearticle 
    @publication = @publication, 
    @article = @article, 
    @source_object = @article, 
    @type = N'table', 
    @source_owner = @owner, 
    @destination_owner = @owner;

-- Start the snapshot job.
EXEC sp_startpublication_snapshot
    @publication = @publication;
GO