Konfigurera egenskaper för ögonblicksbild (replikering med Transact-SQL-programmering)

gäller för:SQL ServerAzure SQL Managed Instance

Snapshot-egenskaper kan definieras och modifieras programmatiskt med hjälp av replikationslagrade procedurer, där de lagrade procedurerna beror på typen av publikation.

Så här konfigurerar du egenskaper för ögonblicksbilden när du skapar en ögonblicksbild eller en transaktionell publikation

  1. På utgivaren kör du sp_addpublication. Ange ett publiceringsnamn för @publication, ett värde av antingen snapshot eller kontinuerligt för @repl_freq, och en eller flera av följande snapshot-relaterade parametrar:

    • @alt_snapshot_folder - ange en sökväg om snapshoten för denna publikation nås från den platsen istället för eller utöver snapshot-standardmappen.
    • @compress_snapshot - ange värdet true om ögonblicksbildsfilerna i den alternativa mappen för ögonblicksbilder är komprimerade i Microsoft CAB-filformatet.
    • @pre_snapshot_script - ange filnamnet och hela sökvägen för en .sql fil som ska köras vid prenumeranten under initieringen innan den initiala snapshoten appliceras.
    • @post_snapshot_script - specificera filnamnet och hela sökvägen för en .sql-fil som kommer att köras hos prenumeranten under initieringen efter att den initiala snapshoten har applicerats.
    • @snapshot_in_defaultfolder - ange värdet false om ögonblicksbilden endast är tillgänglig på en icke-standardplats.

    För mer information om att skapa publikationer, se Skapa en publikation.

Konfigurera egenskaper för ögonblicksbilden när du skapar en merge-publikation

  1. Hos utgivaren kör du sp_addmergepublication. Ange ett publiceringsnamn för @publication, ett värde av antingen snapshot eller kontinuerligt för @repl_freq, och en eller flera av följande snapshot-relaterade parametrar:

    • alt_snapshot_folder – ange en sökväg om snapshoten för denna publikation nås från den platsen istället för eller utöver snapshot-standardmappen.
    • @compress_snapshot - ange värdet true om snapshotfilerna i den alternativa snapshot-mappen komprimeras i CAB-format.
    • @pre_snapshot_script - ange filnamnet och hela sökvägen för en .sql fil som ska köras vid prenumeranten under initieringen innan den initiala snapshoten appliceras.
    • @post_snapshot_script - specificera filnamnet och hela sökvägen för en .sql-fil som kommer att köras hos prenumeranten under initieringen efter att den initiala snapshoten har applicerats.
    • @snapshot_in_defaultfolder - ange värdet false om ögonblicksbilden endast är tillgänglig på en annan plats än standardplatsen.
  2. För mer information om att skapa publikationer, se Skapa en publikation.

Att ändra ögonblicksbildsegenskaper hos en befintlig ögonblicksbild eller transaktionell publikation

  1. Vid Publisher i publikationsdatabasen, kör sp_changepublication. Ange ett värde på 1 för @force_invalidate_snapshot och ett av följande värden för @property:

    • alt_snapshot_folder -also specificera en ny sökväg till den alternativa snapshot-mappen för @value.
    • compress_snapshot - ange också ett värde av antingen sant eller falskt för @value för att indikera om snapshotfilerna i den alternativa snapshot-mappen är komprimerade i CAB-filformatet.
    • pre_snapshot_script – även för att @value specificera filnamnet och hela sökvägen för en .sql-fil som ska köras hos prenumeranten under initieringen innan den initiala snapshoten appliceras.
    • post_snapshot_script – även för att @value specificera filnamnet och hela sökvägen för en .sql fil som kommer att köras hos prenumeranten under initialiseringen efter att den initiala snapshoten har applicerats.
    • snapshot_in_defaultfolder - specificera också ett värde på antingen sant eller falskt för att indikera om snapshoten endast är tillgänglig på en icke-standardplats.
  2. (Valfritt) Vid Publisher i publikationsdatabasen, kör sp_changepublication_snapshot. Specificera @publication och en eller flera av schemaläggnings- eller säkerhetsbehörighetsparametrarna som ändras.

    Important

    När det är möjligt uppmanar du användarna att ange säkerhetsautentiseringsuppgifter vid körning. Om du måste lagra autentiseringsuppgifter i en skriptfil måste du skydda filen för att förhindra obehörig åtkomst.

  3. Kör Replication Snapshot Agent från kommandoprompten eller starta Snapshot Agent-jobbet för att generera en ny snapshot. Mer information finns i Skapa och tillämpa den första ögonblicksbilden.

För att ändra snapshot-egenskaper för en befintlig sammanslagningspublikation

  1. På Publisher i publikationsdatabasen, kör sp_changemergepublication. Ange ett värde på 1 för @force_invalidate_snapshot och ett av följande värden för @property**:

    • alt_snapshot_folder -also specificera en ny sökväg till den alternativa snapshot-mappen för @value.
    • compress_snapshot - ange också ett värde av antingen sant eller falskt för @value för att indikera om snapshotfilerna i den alternativa snapshot-mappen är komprimerade i CAB-filformatet.
    • pre_snapshot_script – även för att @value specificera filnamnet och hela sökvägen för en .sql-fil som ska köras hos prenumeranten under initieringen innan den initiala snapshoten appliceras.
    • post_snapshot_script – även för att @value specificera filnamnet och hela sökvägen för en .sql fil som kommer att köras hos prenumeranten under initialiseringen efter att den initiala snapshoten har applicerats.
    • snapshot_in_defaultfolder - specificera också ett värde på antingen sant eller falskt för att indikera om snapshoten endast är tillgänglig på en icke-standardplats.
  2. Kör Replication Snapshot Agent från kommandoprompten eller starta Snapshot Agent-jobbet för att generera en ny snapshot. Mer information finns i Skapa och tillämpa den första ögonblicksbilden.

Example

Detta exempel skapar en publikation som använder en alternativ snapshot-mapp och en komprimerad 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