Konfigurace vlastností snímku (programování replikace v Transact-SQL)

Platí pro:SQL ServerAzure SQL Managed Instance

Vlastnosti snapshotů lze programově definovat a upravovat pomocí replikačních uložených procedur, kde uložené procedury závisí na typu publikace.

Pro nastavení vlastností snapshotu při vytváření snapshotu nebo transakční publikace

  1. Na serveru Publisher spusťte sp_addpublication. Zadejte název publikace pro @publication, hodnotu buď snímku nebo kontinuální pro @repl_freq, a jeden nebo více z následujících parametrů souvisejících se snímkem:

    • @alt_snapshot_folder – zadejte cestu, pokud je snímek této publikace přístupný v tomto umístění místo výchozí složky snímků nebo navíc k ní.
    • @compress_snapshot- Zadejte hodnotu True, pokud jsou soubory snímků v alternativní složce snímek komprimovány ve formátu Microsoft CAB.
    • @pre_snapshot_script - specifikovat název souboru a celou cestu .sql souboru, který bude vykonán na Subscriber během inicializace před aplikací počátečního snapshotu.
    • @post_snapshot_script - specifikovat název souboru a celou cestu .sql souboru, který bude vykonán u odběratele během inicializace po použití počátečního snímku.
    • @snapshot_in_defaultfolder - Specifikovat hodnotu fals, pokud je snapshot dostupný pouze na nevýchozím místě.

    Pro více informací o tvorbě publikací viz Vytvořit publikaci.

Pro nastavení vlastností snapshotu při vytváření merge publikace

  1. Na serveru Publisher proveďte sp_addmergepublication. Zadejte název publikace pro @publication, hodnotu buď snímku nebo kontinuální pro @repl_freq, a jeden nebo více z následujících parametrů souvisejících se snímkem:

    • alt_snapshot_folder - Specifikujte cestu, pokud je snapshot této publikace přístupný z tohoto místa místo nebo vedle výchozí složky snapshot.
    • @compress_snapshot - Zadejte hodnotu pravdy , pokud jsou soubory snímků v alternativní složce snímek komprimovány ve formátu CAB.
    • @pre_snapshot_script - specifikovat název souboru a celou cestu .sql souboru, který bude vykonán na Subscriber během inicializace před aplikací počátečního snapshotu.
    • @post_snapshot_script - specifikovat název souboru a celou cestu .sql souboru, který bude vykonán u odběratele během inicializace po použití počátečního snímku.
    • @snapshot_in_defaultfolder - Specifikovat hodnotu fals, pokud je snapshot dostupný pouze na nevýchozím místě.
  2. Pro více informací o tvorbě publikací viz Vytvořit publikaci.

Pro úpravu vlastností snímků existujícího snímku nebo transakční publikace

  1. Na serveru Publisher v publikační databázi spusťte sp_changepublication. Zadejte hodnotu 1 pro @force_invalidate_snapshot a jednu z následujících hodnot pro @property:

    • alt_snapshot_folder -also specifikovat novou cestu do alternativní složky snapshot pro @value.
    • compress_snapshot – také zadejte hodnotu true nebo false pro @value, která určuje, zda jsou soubory snímků v alternativní složce pro snímky komprimovány ve formátu souborů CAB.
    • pre_snapshot_script – také pro @value zadejte název souboru a úplnou cestu k souboru .sql, který bude spuštěn na odběrateli během inicializace před použitím počátečního snímku.
    • post_snapshot_script – také pro @value specifikovat název souboru a plnou cestu .sql souboru, který bude vykonán u odběratele během inicializace po aplikaci počátečního snímku.
    • snapshot_in_defaultfolder – také zadejte hodnotu true nebo false, která označuje, zda je snímek dostupný pouze v nevýchozím umístění.
  2. (Volitelné) Na serveru Publisher v databázi publikace spusťte sp_changepublication_snapshot. Zadejte @publication a jeden či více parametrů plánování nebo parametrů přihlašovacích údajů zabezpečení, které se mění.

    Important

    Pokud je to možné, vyzve uživatele, aby za běhu zadali přihlašovací údaje zabezpečení. Pokud musíte přihlašovací údaje uložit do souboru skriptu, musíte ho zabezpečit, abyste zabránili neoprávněnému přístupu.

  3. Spusť Replication Snapshot Agent z příkazového řádku nebo spustit úkol Snapshot Agent a vygenerovat nový snapshot. Další informace naleznete v tématu Vytvoření a použití počátečního snímku.

Úprava vlastností snímku existující publikace slučování

  1. Na serveru Publisher v databázi publikace spusťte sp_changemergepublication. Zadejte hodnotu 1 pro @force_invalidate_snapshot a jednu z následujících hodnot pro @property**:

    • alt_snapshot_folder -also specifikovat novou cestu do alternativní složky snapshot pro @value.
    • compress_snapshot – také zadejte hodnotu true nebo false pro @value, která určuje, zda jsou soubory snapshotu v alternativní složce snapshotů komprimovány ve formátu souboru CAB.
    • pre_snapshot_script – také pro @value zadejte název souboru a úplnou cestu k souboru .sql, který bude spuštěn na odběrateli během inicializace před použitím počátečního snímku.
    • post_snapshot_script – také pro @value specifikovat název souboru a plnou cestu .sql souboru, který bude vykonán u odběratele během inicializace po aplikaci počátečního snímku.
    • snapshot_in_defaultfolder – zadejte také hodnotu true nebo false, která určuje, zda je snímek dostupný pouze v nevýchozím umístění.
  2. Spusť Replication Snapshot Agent z příkazového řádku nebo spustit úkol Snapshot Agent a vygenerovat nový snapshot. Další informace naleznete v tématu Vytvoření a použití počátečního snímku.

Example

Tento příklad vytváří publikaci, která používá alternativní složku snapshotů a komprimovaný snapshot.

-- 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'AdventureWorks2022'; 
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