Настройка свойств моментального снимка (программирование репликации на языке Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure
Свойства моментального снимка можно определять и изменять программно с помощью хранимых процедур репликации, где используемые хранимые процедуры зависят от типа публикации.
Настройка свойств моментального снимка при создании снимка публикации транзакций
Выполните процедуру 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.
Настройка свойств моментального снимка при создании снимка публикации слиянием
Выполните процедуру 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, если моментальный снимок доступен только в месте хранения, отличном от места по умолчанию.
Дополнительные сведения о создании публикаций см. в разделе Create a Publication.
Изменение свойств существующего моментального снимка публикации транзакций
На издателе в базе данных публикации выполните процедуру 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 , чтобы указать, доступен ли моментальный снимок только в месте хранения, отличном от места по умолчанию.
- alt_snapshot_folder — также укажите новый путь к альтернативной папке моментальных снимков в параметре
На издателе в базе данных публикации выполните хранимую процедуру sp_changepublication_snapshot(необязательно). Укажите параметр
@publication
и один или несколько параметров планирования или учетных данных безопасности, которые нужно изменить.Внимание
По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. В случае необходимости хранения учетных данных в файле скрипта этот файл следует защищать во избежание несанкционированного доступа.
Чтобы сформировать новый моментальный снимок, запустите агент моментальных снимков репликации ( Replication Snapshot Agent ) из командной строки или задание агента моментальных снимков. Дополнительные сведения см. в разделе Create and Apply the Initial Snapshot.
Изменение свойств существующего моментального снимка публикации слиянием
В базе данных публикации на издателе выполните процедуру 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 , чтобы указать, доступен ли моментальный снимок только в месте хранения, отличном от места по умолчанию.
- alt_snapshot_folder — также укажите новый путь к альтернативной папке моментальных снимков в параметре
Чтобы сформировать новый моментальный снимок, запустите агент моментальных снимков репликации ( 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