Compartir a través de


Configurar propiedades de instantáneas (programación de la replicación con Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Las propiedades de las instantáneas se pueden definir y modificar mediante programación usando procedimientos almacenados de replicación, los cuales dependerán del tipo de publicación.

Para configurar propiedades de instantáneas al crear una instantánea o una publicación transaccional

  1. En el publicador, ejecute sp_addpublication. Especifique un nombre de publicación para @publication, el valor snapshot o continuous para @repl_freq, y uno o más de los parámetros siguientes relacionados con instantáneas:

    • @alt_snapshot_folder: especifique una ruta de acceso si a la instantánea de esta publicación se accede desde esa ubicación en lugar de o además de desde la carpeta predeterminada para instantáneas.
    • @compress_snapshot: especifique el valor true si los archivos de instantánea de la carpeta de instantáneas alternativa están comprimidos en el formato de archivo CAB de Microsoft.
    • @pre_snapshot_script: especifique el nombre de archivo y la ruta de acceso completa de un archivo .sql que se ejecutará en el suscriptor durante la inicialización antes de que se aplique la instantánea inicial.
    • @post_snapshot_script: especifique el nombre de archivo y la ruta de acceso completa de un archivo .sql que se ejecutará en el suscriptor durante la inicialización antes de que se aplique la instantánea inicial.
    • @snapshot_in_defaultfolder: especifique un valor de false si la instantánea solo está disponible en una ubicación que no es la predeterminada.

    Para obtener más información acerca de la creación de publicaciones, vea Create a Publication.

Para configurar propiedades de instantáneas al crear una publicación de combinación

  1. En el publicador, ejecute sp_addmergepublication. Especifique un nombre de publicación para @publication, el valor snapshot o continuous para @repl_freq, y uno o más de los parámetros siguientes relacionados con instantáneas:

    • alt_snapshot_folder: especifique una ruta de acceso si a la instantánea de esta publicación se accede desde esa ubicación en lugar o además de desde la carpeta predeterminada para instantáneas.
    • @compress_snapshot: especifique un valor de true si los archivos de instantánea de la carpeta de instantáneas están comprimidos en el formato de archivo CAB.
    • @pre_snapshot_script: especifique el nombre de archivo y la ruta de acceso completa de un archivo .sql que se ejecutará en el suscriptor durante la inicialización antes de que se aplique la instantánea inicial.
    • @post_snapshot_script: especifique el nombre de archivo y la ruta de acceso completa de un archivo .sql que se ejecutará en el suscriptor durante la inicialización antes de que se aplique la instantánea inicial.
    • @snapshot_in_defaultfolder: especifique un valor de false si la instantánea solo está disponible en una ubicación que no es la predeterminada.
  2. Para obtener más información acerca de la creación de publicaciones, vea Create a Publication.

Para modificar las propiedades de instantánea de una instantánea o de una publicación transaccional existente

  1. En la base de datos de publicación del publicador, ejecute sp_changepublication. Especifique un valor de 1 para @force_invalidate_snapshot y uno de los valores siguientes para @property:

    • alt_snapshot_folder: especifique también una nueva ruta de acceso a la carpeta de instantáneas alternativa para @value.
    • compress_snapshot: especifique también un valor de true o false para @value a fin de indicar si los archivos de instantánea de la carpeta de instantáneas alternativa están comprimidos en el formato de archivo CAB.
    • pre_snapshot_script: especifique también para @value el nombre de archivo y la ruta de acceso completa de un archivo .sql que se ejecutará en el suscriptor durante la inicialización antes de que se aplique la instantánea inicial.
    • post_snapshot_script: especifique también para @value el nombre de archivo y la ruta de acceso completa de un archivo .sql que se ejecutará en el suscriptor durante la inicialización antes de que se aplique la instantánea inicial.
    • snapshot_in_defaultfolder - especifique también el valor true o false para indicar si la instantánea está disponible únicamente en una ubicación que no es la predeterminada.
  2. (Opcional) En la base de datos de publicación del publicador, ejecute sp_changepublication. Especifique @publication y uno o más de los parámetros de credenciales de seguridad o de programación que se van a cambiar.

    Importante

    Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución. Si debe almacenar las credenciales en un archivo de script, proteja el archivo para evitar el acceso no autorizado.

  3. Ejecute el Replication Snapshot Agent desde el símbolo del sistema o inicie el trabajo del Agente de instantáneas para generar una nueva instantánea. Para más información, consulte Crear y aplicar la instantánea inicial.

Para modificar las propiedades de instantánea de una publicación de combinación existente

  1. En la base de datos de publicación del publicador, ejecute sp_changemergepublication. Especifique un valor de 1 para @force_invalidate_snapshot y uno de los valores siguientes para @property**:

    • alt_snapshot_folder: especifique también una nueva ruta de acceso a la carpeta de instantáneas alternativa para @value.
    • compress_snapshot: especifique también un valor de true o false para @value a fin de indicar si los archivos de instantánea de la carpeta de instantáneas alternativa están comprimidos en el formato de archivo CAB.
    • pre_snapshot_script: especifique también para @value el nombre de archivo y la ruta de acceso completa de un archivo .sql que se ejecutará en el suscriptor durante la inicialización antes de que se aplique la instantánea inicial.
    • post_snapshot_script: especifique también para @value el nombre de archivo y la ruta de acceso completa de un archivo .sql que se ejecutará en el suscriptor durante la inicialización antes de que se aplique la instantánea inicial.
    • snapshot_in_defaultfolder - especifique también el valor true o false para indicar si la instantánea está disponible únicamente en una ubicación que no es la predeterminada.
  2. Ejecute el Replication Snapshot Agent desde el símbolo del sistema o inicie el trabajo del Agente de instantáneas para generar una nueva instantánea. Para más información, consulte Crear y aplicar la instantánea inicial.

Ejemplo

En este ejemplo se crea una publicación que usa una carpeta de instantáneas alternativa y una instantánea comprimida.

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