Поделиться через


Настройка свойств моментального снимка (программирование репликации на языке Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Свойства моментального снимка можно определять и изменять программно с помощью хранимых процедур репликации, где используемые хранимые процедуры зависят от типа публикации.

Настройка свойств моментального снимка при создании снимка публикации транзакций

  1. Выполните процедуру sp_addpublicationна издателе. Укажите имя публикации в параметре @publication, значение snapshot или continuous в параметре @repl_freq, а также один или несколько следующих параметров, связанных с моментальными снимками:

    • @alt_snapshot_folder — определяет путь, где хранится моментальный снимок для этой публикации, если он отличается от папки хранения мгновенных снимков по умолчанию.
    • @compress_snapshot— укажите значение true, если файлы моментальных снимков в альтернативной папке моментальных снимков сжимаются в формате CAB-файла Майкрософт.
    • @pre_snapshot_script — определяет имя и полный путь к SQL-файлу, который будет выполнен в подписчике во время инициализации до применения исходного моментального снимка.
    • @post_snapshot_script — определяет имя и полный путь к SQL-файлу, который будет выполнен в подписчике во время инициализации после применения исходного моментального снимка.
    • @snapshot_in_defaultfolder — укажите значение false, если моментальный снимок доступен только в месте хранения, отличном от места по умолчанию.

    Дополнительные сведения о создании публикаций см. в разделе Create a Publication.

Настройка свойств моментального снимка при создании снимка публикации слиянием

  1. Выполните процедуру sp_addmergepublicationна издателе. Укажите имя публикации в параметре @publication, значение snapshot или continuous в параметре @repl_freq, а также один или несколько следующих параметров, связанных с моментальными снимками:

    • alt_snapshot_folder — определяет путь, где хранится моментальный снимок для этой публикации, если он отличается от папки хранения мгновенных снимков по умолчанию.
    • @compress_snapshot — укажите значение true, если файлы моментальных снимков в альтернативной папке моментальных снимков сжаты в формате CAB.
    • @pre_snapshot_script — определяет имя и полный путь к SQL-файлу, который будет выполнен в подписчике во время инициализации до применения исходного моментального снимка.
    • @post_snapshot_script — определяет имя и полный путь к SQL-файлу, который будет выполнен в подписчике во время инициализации после применения исходного моментального снимка.
    • @snapshot_in_defaultfolder — укажите значение false, если моментальный снимок доступен только в месте хранения, отличном от места по умолчанию.
  2. Дополнительные сведения о создании публикаций см. в разделе Create a Publication.

Изменение свойств существующего моментального снимка публикации транзакций

  1. На издателе в базе данных публикации выполните процедуру sp_changepublication. Укажите значение 1 для @force_invalidate_snapshot и одно из следующих значений для @property:

    • alt_snapshot_folder — также укажите новый путь к альтернативной папке моментальных снимков в параметре @value.
    • compress_snapshot — также задайте значение true или false в параметре @value, чтобы указать, сжаты ли файлы моментальных снимков в альтернативной папке в формате CAB.
    • pre_snapshot_script — также в параметре @value укажите имя и полный путь к SQL-файлу, который будет выполнен в подписчике во время инициализации до применения исходного моментального снимка.
    • pre_snapshot_script — также в параметре @value укажите имя и полный путь к SQL-файлу, который будет выполнен в подписчике во время инициализации после применения исходного моментального снимка.
    • snapshot_in_defaultfolder — также укажите значение true или false , чтобы указать, доступен ли моментальный снимок только в месте хранения, отличном от места по умолчанию.
  2. На издателе в базе данных публикации выполните хранимую процедуру sp_changepublication_snapshot(необязательно). Укажите параметр @publication и один или несколько параметров планирования или учетных данных безопасности, которые нужно изменить.

    Внимание

    По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. В случае необходимости хранения учетных данных в файле скрипта этот файл следует защищать во избежание несанкционированного доступа.

  3. Чтобы сформировать новый моментальный снимок, запустите агент моментальных снимков репликации ( Replication Snapshot Agent ) из командной строки или задание агента моментальных снимков. Дополнительные сведения см. в разделе Create and Apply the Initial Snapshot.

Изменение свойств существующего моментального снимка публикации слиянием

  1. В базе данных публикации на издателе выполните процедуру sp_changemergepublication. Укажите значение 1 для @force_invalidate_snapshot и одно из следующих значений для @property**:

    • alt_snapshot_folder — также укажите новый путь к альтернативной папке моментальных снимков в параметре @value.
    • compress_snapshot — также задайте значение true или false в параметре @value, чтобы указать, сжаты ли файлы моментальных снимков в альтернативной папке в формате CAB.
    • pre_snapshot_script — также в параметре @value укажите имя и полный путь к SQL-файлу, который будет выполнен в подписчике во время инициализации до применения исходного моментального снимка.
    • pre_snapshot_script — также в параметре @value укажите имя и полный путь к SQL-файлу, который будет выполнен в подписчике во время инициализации после применения исходного моментального снимка.
    • snapshot_in_defaultfolder — также укажите значение true или false , чтобы указать, доступен ли моментальный снимок только в месте хранения, отличном от места по умолчанию.
  2. Чтобы сформировать новый моментальный снимок, запустите агент моментальных снимков репликации ( Replication Snapshot Agent ) из командной строки или задание агента моментальных снимков. Дополнительные сведения см. в разделе Create and Apply the Initial 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