Partilhar via


Configurar propriedades de instantâneo (Programação Transact-SQL de replicação)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Propriedades de instantâneo podem ser definidas e modificadas de forma programada usando-se procedimentos armazenados de replicação, nos quais os procedimentos armazenados usados dependem do tipo de publicação.

Para configurar propriedades de instantâneo ao criar uma publicação de instantâneo ou transacional

  1. No Publicador, execute sp_addpublication. Especifique um nome de publicação para @publication, um valor de instantâneo ou contínuo para @repl_freq e um ou mais dos seguintes parâmetros relacionados a instantâneo:

    • @alt_snapshot_folder – especifique um caminho se o instantâneo para essa publicação for acessado daquele local em vez de ou além da pasta padrão de instantâneo.
    • @compress_snapshot – especifique um valor true se os arquivos de instantâneo na pasta de instantâneo alternativa forem compactados em formato de arquivo CAB da Microsoft.
    • @pre_snapshot_script – especifique o nome de arquivo e caminho completo de um arquivo .sql que será executado no Assinante durante a inicialização antes que o instantâneo inicial seja aplicado.
    • @post_snapshot_script – especifique o nome de arquivo e caminho completo de um arquivo .sql que será executado no Assinante durante a inicialização depois que o instantâneo inicial for aplicado.
    • @snapshot_in_defaultfolder – especifique um valor false se o instantâneo só estiver disponível em um local não padrão.

    Para obter mais informações sobre como criar publicações, consulte Create a Publication.

Para configurar propriedades de instantâneo ao criar uma publicação de mesclagem

  1. No Publicador, execute sp_addmergepublication. Especifique um nome de publicação para @publication, um valor de instantâneo ou contínuo para @repl_freq e um ou mais dos seguintes parâmetros relacionados a instantâneo:

    • alt_snapshot_folder – especifique um caminho se o instantâneo para essa publicação for acessado daquele local em vez de ou além da pasta padrão de instantâneo.
    • @compress_snapshot – especifique um valor true se os arquivos de instantâneo na pasta de instantâneo alternativa forem compactados em formato de arquivo CAB.
    • @pre_snapshot_script – especifique o nome de arquivo e caminho completo de um arquivo .sql que será executado no Assinante durante a inicialização antes que o instantâneo inicial seja aplicado.
    • @post_snapshot_script – especifique o nome de arquivo e caminho completo de um arquivo .sql que será executado no Assinante durante a inicialização depois que o instantâneo inicial for aplicado.
    • @snapshot_in_defaultfolder – especifique um valor false se o instantâneo só estiver disponível em um local não padrão.
  2. Para obter mais informações sobre como criar publicações, consulte Create a Publication.

Para modificar as propriedades de instantâneo de uma publicação de instantâneo ou transacional existente

  1. No Publicador do banco de dados de publicação, execute sp_changepublication. Especifique um valor 1 para @force_invalidate_snapshot e um dos seguintes valores para @property:

    • alt_snapshot_folder – também especifique um caminho novo para a pasta de instantâneo alternativa para @value.
    • compress_snapshot – especifique também um valor de verdadeiro ou falso para @value para indicar se arquivos de instantâneo na pasta de instantâneo alternativa são compactados no formato de arquivo CAB.
    • pre_snapshot_script – também para @value, especifique o nome de arquivo e caminho completo de um arquivo .sql que será executado no Assinante durante a inicialização antes que o instantâneo inicial seja aplicado.
    • post_snapshot_script – também para @value, especifique o nome de arquivo e caminho completo de um arquivo .sql que será executado no Assinante durante a inicialização depois que o instantâneo inicial for aplicado.
    • @snapshot_in_defaultfolder - especifique também um valor de verdadeiro ou falso para indicar se o instantâneo está disponível apenas em um local não padrão.
  2. (Opcional) No Publicador do banco de dados de publicação, execute sp_changepublication_snapshot. Especifique @publication e um ou mais dos parâmetros de credencial de segurança ou agendamento que estão sendo alterados.

    Importante

    Quando possível, solicite que os usuários insiram as credenciais de segurança em tempo de execução. Se for necessário armazenar credenciais em um arquivo de script, você deverá proteger o arquivo para impedir acesso não autorizado.

  3. Execute o Replication Snapshot Agent no prompt de comando ou inicie o trabalho do Agente de Instantâneo para gerar um instantâneo novo. Para obter mais informações, consulte Criar e aplicar o instantâneo inicial.

Para modificar as propriedades de instantâneo de uma publicação de mesclagem existente

  1. No Publicador do banco de dados de publicação, execute sp_changemergepublication. Especifique um valor 1 para @force_invalidate_snapshot e um dos seguintes valores para @property**:

    • alt_snapshot_folder – também especifique um caminho novo para a pasta de instantâneo alternativa para @value.
    • compress_snapshot – especifique também um valor de verdadeiro ou falso para @value para indicar se arquivos de instantâneo na pasta de instantâneo alternativa são compactados no formato de arquivo CAB.
    • pre_snapshot_script – também para @value, especifique o nome de arquivo e caminho completo de um arquivo .sql que será executado no Assinante durante a inicialização antes que o instantâneo inicial seja aplicado.
    • post_snapshot_script – também para @value, especifique o nome de arquivo e caminho completo de um arquivo .sql que será executado no Assinante durante a inicialização depois que o instantâneo inicial for aplicado.
    • @snapshot_in_defaultfolder - especifique também um valor de verdadeiro ou falso para indicar se o instantâneo está disponível apenas em um local não padrão.
  2. Execute o Replication Snapshot Agent no prompt de comando ou inicie o trabalho do Agente de Instantâneo para gerar um instantâneo novo. Para obter mais informações, consulte Criar e aplicar o instantâneo inicial.

Exemplo

Esse exemplo cria uma publicação que usa uma pasta de instantâneo alternativa e um instantâneo compactado.

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