Compartilhar via


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

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

  • No Publicador, execute sp_addpublication. Especifique um nome de publicação para @publication, um valor de snapshot ou continuous 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 de uma pasta padrão de instantâneo.

    • @compress_snapshot - especifique um valor de verdadeiro se os arquivos de instantâneo na pasta de instantâneo alternativa forem compactados no formato de arquivo CAB 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 de falso 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 Como criar uma publicação (Programação Transact-SQL de replicação).

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 snapshot ou continuous 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 de verdadeiro 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 de falso 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 Como criar uma publicação (Programação Transact-SQL de replicação).

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 de 1 para @force_invalidate_snapshot e um dos valores a seguir para @property:

    • alt_snapshot_folder - também especifique um caminho novo para a pasta de instantâneo alternativa para @valor.

    • 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 programação que estão sendo alterados.

    Observação sobre segurançaObservação sobre segurança

    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 evitar o acesso não autorizado.

  3. Execute o Replication Snapshot Agent no prompt de comando ou inicie o trabalho do Snapshot Agent para gerar um instantâneo novo. Para obter mais informações, consulte Como criar o instantâneo inicial (Programação Transact-SQL de replicação).

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 valores a seguir 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 Snapshot Agent para gerar um instantâneo novo. Para obter mais informações, consulte Como criar o instantâneo inicial (Programação Transact-SQL de replicação).

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