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


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

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

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

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

    • @alt_snapshot_folder — определяет путь, где хранится моментальный снимок для этой публикации, если он отличается от папки хранения мгновенных снимков по умолчанию.

    • @compress_snapshot — определяет значение true, если файлы моментального снимка в альтернативной папке моментальных снимков сжаты в формате Microsoft CAB.

    • @pre_snapshot_script — определяет имя и полный путь к SQL-файлу, который будет выполнен на подписчике во время инициализации до применения исходного моментального снимка.

    • @pre_snapshot_script — определяет имя и полный путь к SQL-файлу, который будет выполнен на подписчике во время инициализации до применения исходного моментального снимка.

    • @snapshot_in_defaultfolder — определяет значение false, если моментальный снимок доступен только в месте хранения, отличном от места по умолчанию.

    Дополнительные сведения о создании публикаций см. в разделе Как создать публикацию (программирование репликации на языке Transact-SQL).

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

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

    • @alt_snapshot_folder — определяет путь, где хранится моментальный снимок для этой публикации, если он отличается от папки хранения мгновенных снимков по умолчанию.

    • @compress_snapshot — определяет значение true, если файлы моментального снимка в альтернативной папке моментальных снимков сжаты в формате CAB.

    • @pre_snapshot_script — определяет имя и полный путь к SQL-файлу, который будет выполнен на подписчике во время инициализации до применения исходного моментального снимка.

    • @pre_snapshot_script — определяет имя и полный путь к SQL-файлу, который будет выполнен на подписчике во время инициализации до применения исходного моментального снимка.

    • @snapshot_in_defaultfolder — определяет значение false, если моментальный снимок доступен только в месте хранения, отличном от места по умолчанию.

  2. Дополнительные сведения о создании публикаций см. в разделе Как создать публикацию (программирование репликации на языке Transact-SQL).

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

  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. Чтобы сформировать новый моментальный снимок, запустите агент моментальных снимков репликации (Агент моментальных снимков репликации) из командной строки или задание агента моментальных снимков. Дополнительные сведения см. в разделе Как создать исходный моментальный снимок (программирование репликации на языке Transact-SQL).

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

  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. Чтобы сформировать новый моментальный снимок, запустите агент моментальных снимков репликации (Агент моментальных снимков репликации) из командной строки или задание агента моментальных снимков. Дополнительные сведения см. в разделе Как создать исходный моментальный снимок (программирование репликации на языке Transact-SQL).

Пример

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

-- 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'AdventureWorks2008R2'; 
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 [AdventureWorks2008R2]
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