Konfigurowanie właściwości migawek (replikacja — programowanie w języku Transact-SQL)

Dotyczy:SQL ServerAzure SQL Managed Instance

Właściwości migawek można definiować i modyfikować programowo za pomocą procedur składowanych replikacji, przy czym używane procedury składowane zależą od typu publikacji.

Aby skonfigurować właściwości migawki podczas tworzenia migawki lub publikacji transakcyjnej

  1. Na Publisher wykonaj sp_addpublication. Określ nazwę publikacji dla @publication, wartość migawka albo ciągła dla @repl_freq oraz co najmniej jeden z następujących parametrów związanych z migawką:

    • @alt_snapshot_folder — określ ścieżkę, jeśli migawka dla tej publikacji jest dostępna z tej lokalizacji zamiast domyślnego folderu migawek lub oprócz niego.
    • @compress_snapshot - określ wartość true, jeśli pliki migawek w alternatywnym folderze migawek są skompresowane do formatu pliku Microsoft CAB.
    • @pre_snapshot_script - określić nazwę pliku i pełną ścieżkę pliku .sql , który zostanie wykonany na abonencie podczas inicjalizacji przed zastosowaniem początkowego snapshotu.
    • @post_snapshot_script - określić nazwę pliku i pełną ścieżkę pliku .sql , który zostanie wykonany na abonencie podczas inicjacji po zastosowaniu początkowego snapshotu.
    • @snapshot_in_defaultfolder — ustaw wartość false, jeśli migawka jest dostępna tylko w lokalizacji innej niż domyślna.

    Więcej informacji o tworzeniu publikacji znajdziesz w sekcji Stwórz publikację.

Aby skonfigurować właściwości migawki podczas tworzenia publikacji scalającej

  1. Na Publisher wykonaj sp_addmergepublication. Określ nazwę publikacji dla @publication, wartość snapshot lub continuous dla @repl_freq oraz co najmniej jeden z następujących parametrów związanych z migawką:

    • alt_snapshot_folder — określ ścieżkę, jeśli do migawki tej publikacji uzyskuje się dostęp z tej lokalizacji zamiast z domyślnego folderu migawek lub oprócz niego.
    • @compress_snapshot — określ wartość true, jeśli pliki migawek w alternatywnym folderze migawek są skompresowane w formacie CAB.
    • @pre_snapshot_script - określić nazwę pliku i pełną ścieżkę pliku .sql , który zostanie wykonany na abonencie podczas inicjalizacji przed zastosowaniem początkowego snapshotu.
    • @post_snapshot_script - określić nazwę pliku i pełną ścieżkę pliku .sql , który zostanie wykonany na abonencie podczas inicjacji po zastosowaniu początkowego snapshotu.
    • @snapshot_in_defaultfolder — określ wartość false, jeśli migawka jest dostępna tylko w lokalizacji innej niż domyślna.
  2. Więcej informacji o tworzeniu publikacji znajdziesz w sekcji Stwórz publikację.

Aby zmodyfikować właściwości snapshotów istniejącego snapshotu lub publikacji transakcyjnej

  1. Na Publisher w bazie publikacji wykonaj sp_changepublication. Określmy wartość 1 dla @force_invalidate_snapshot oraz jedną z następujących wartości dla @property:

    • alt_snapshot_folder - także określa nową ścieżkę do alternatywnego folderu migawek dla @value.
    • compress_snapshot — określ także wartość true lub @value dla , aby określić, czy pliki migawek w alternatywnym folderze migawek są skompresowane w formacie CAB.
    • pre_snapshot_script — również dla @value należy określić nazwę pliku i pełną ścieżkę do pliku .sql, który zostanie wykonany u subskrybenta podczas inicjalizacji przed zastosowaniem początkowej migawki.
    • post_snapshot_script — również dla @value należy określić nazwę pliku i pełną ścieżkę do pliku .sql, który zostanie wykonany u subskrybenta podczas inicjalizacji po zastosowaniu początkowej migawki.
    • snapshot_in_defaultfolder — określ również wartość true lub false, aby wskazać, czy migawka jest dostępna wyłącznie w lokalizacji innej niż domyślna.
  2. (Opcjonalnie) Na serwerze Publishera w bazie danych publikacji wykonaj sp_changepublication_snapshot. Określ @publication oraz co najmniej jeden ze zmienianych parametrów planowania lub poświadczeń zabezpieczeń.

    Ważna

    Jeśli to możliwe, proś użytkowników o wprowadzenie poświadczeń uwierzytelniających podczas działania. Jeśli musisz przechowywać poświadczenia w pliku skryptu, musisz zabezpieczyć plik, aby zapobiec nieautoryzowanemu dostępowi.

  3. Uruchom Replication Snapshot Agent z wiersza poleceń lub rozpocznij zadanie Snapshot Agent, aby wygenerować nowy snapshot. Aby uzyskać więcej informacji, zobacz Tworzenie i stosowanie migawki początkowej.

Aby zmodyfikować właściwości migawek istniejącej publikacji merge

  1. Na serwerze Publisher, w bazie danych publikacji, wykonaj sp_changemergepublication. Określmy wartość 1 dla @force_invalidate_snapshot oraz jedną z następujących wartości dla @property**:

    • alt_snapshot_folder — określa również nową ścieżkę do alternatywnego folderu migawek dla @value.
    • compress_snapshot — określ także wartość true lub @value dla , aby wskazać, czy pliki migawki w alternatywnym folderze migawek są skompresowane w formacie CAB.
    • pre_snapshot_script – także w przypadku @value należy określić nazwę pliku i pełną ścieżkę do pliku .sql, który zostanie uruchomiony u Subskrybenta podczas inicjalizacji przed zastosowaniem początkowej migawki.
    • post_snapshot_script — w przypadku @value należy również określić nazwę pliku i pełną ścieżkę do pliku .sql, który zostanie wykonany u subskrybenta podczas inicjalizacji po zastosowaniu początkowej migawki.
    • snapshot_in_defaultfolder — podaj także wartość true lub false, aby wskazać, czy migawka jest dostępna tylko w lokalizacji innej niż domyślna.
  2. Uruchom Replication Snapshot Agent z wiersza poleceń lub rozpocznij zadanie Snapshot Agent, aby wygenerować nowy snapshot. Aby uzyskać więcej informacji, zobacz Tworzenie i stosowanie migawki początkowej.

Przykład

Ten przykład tworzy publikację, która korzysta z alternatywnego folderu snapshotów oraz skompresowanego snapshota.

-- 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