Procédure : configurer les propriétés de capture instantanée (programmation Transact-SQL de la réplication)

Les propriétés de capture instantanée peuvent être définies et modifiées par programme à l'aide de procédures stockées de réplication qui dépendent du type de publication.

Pour configurer les propriétés de capture instantanée lors de la création d'une publication transactionnelle ou de capture instantanée

  • Sur le serveur de publication, exécutez sp_addpublication. Spécifiez un nom de publication pour @publication, la valeur snapshot ou continuous pour @repl_freq, ainsi qu'un ou plusieurs des paramètres suivants, liés à la capture instantanée :

    • @alt_snapshot_folder – spécifiez un chemin d'accès si l'accès à la capture instantanée pour cette publication s'effectue à partir de cet emplacement à la place ou en plus du dossier de captures instantanées par défaut.

    • @compress_snapshot – spécifiez la valeur true si les fichiers de capture instantanée dans le dossier de captures instantanées de remplacement sont compressés dans le format de fichier CAB de Microsoft.

    • @pre_snapshot_script – spécifiez le nom de fichier et le chemin d'accès complet d'un fichier .sql qui sera exécuté sur l'Abonné au cours de l'initialisation, avant que la capture instantanée initiale soit appliquée.

    • @post_snapshot_script – spécifiez le nom de fichier et le chemin d'accès complet d'un fichier .sql qui sera exécuté sur l'Abonné au cours de l'initialisation, après l'application de la capture instantanée initiale.

    • @snapshot_in_defaultfolder – spécifiez la valeur false si la capture instantanée est disponible uniquement dans un emplacement non défini par défaut.

    Pour plus d'informations sur la création de publications, consultez Procédure : créer une publication (programmation Transact-SQL de la réplication).

Pour configurer les propriétés de capture instantanée lors de la création d'une publication de fusion

  1. Sur le serveur de publication, exécutez sp_addmergepublication. Spécifiez un nom de publication pour @publication, la valeur snapshot ou continuous pour @repl_freq, ainsi qu'un ou plusieurs des paramètres suivants, liés à la capture instantanée :

    • @alt_snapshot_folder – spécifiez un chemin d'accès si l'accès à la capture instantanée pour cette publication s'effectue à partir de cet emplacement à la place ou en plus du dossier de captures instantanées par défaut.

    • @compress_snapshot – spécifiez la valeur true si les fichiers de capture instantanée dans le dossier de captures instantanées de remplacement sont compressés dans le format de fichier CAB.

    • @pre_snapshot_script – spécifiez le nom de fichier et le chemin d'accès complet d'un fichier .sql qui sera exécuté sur l'Abonné au cours de l'initialisation, avant que la capture instantanée initiale soit appliquée.

    • @post_snapshot_script – spécifiez le nom de fichier et le chemin d'accès complet d'un fichier .sql qui sera exécuté sur l'Abonné au cours de l'initialisation, après l'application de la capture instantanée initiale.

    • @snapshot_in_defaultfolder – spécifiez la valeur false si la capture instantanée est disponible uniquement dans un emplacement non défini par défaut.

  2. Pour plus d'informations sur la création de publications, consultez Procédure : créer une publication (programmation Transact-SQL de la réplication).

Pour modifier les propriétés de capture instantanée d'une publication transactionnelle ou de capture instantanée existante

  1. Sur le serveur de publication, dans la base de données de publication, exécutez sp_changepublication. Spécifiez la valeur 1 pour @force_invalidate_snapshot et l'une des valeurs suivantes pour @property :

    • alt_snapshot_folder – spécifiez également un nouveau chemin d'accès au dossier de captures instantanées de remplacement pour @value.

    • compress_snapshot – spécifiez également la valeur true ou false pour @value pour indiquer si les fichiers de capture instantanée stockés dans le dossier de captures instantanées de remplacement sont compressés dans le format de fichier CAB.

    • pre_snapshot_script – spécifiez également pour @value le nom de fichier et le chemin d'accès complet d'un fichier .sql qui sera exécuté sur l'Abonné au cours de l'initialisation, avant que la capture instantanée initiale soit appliquée.

    • post_snapshot_script – spécifiez également pour @value le nom de fichier et le chemin d'accès complet d'un fichier .sql qui sera exécuté sur l'Abonné au cours de l'initialisation, après l'application de la capture instantanée initiale.

    • snapshot_in_defaultfolder – spécifiez également la valeur true ou false pour indiquer si la capture instantanée est disponible uniquement dans un emplacement non défini par défaut.

  2. (Facultatif) Sur le serveur de publication, dans la base de données de publication, exécutez sp_changepublication_snapshot. Spécifiez @publication et un ou plusieurs des paramètres de planification ou d'informations d'identification de sécurité en cours de modification.

    Remarque relative à la sécuritéRemarque relative à la sécurité

    Si possible, demandez aux utilisateurs de fournir des informations d'identification de sécurité au moment de l'exécution. Si vous devez stocker les informations d'identification dans un fichier de script, vous devez sécuriser le fichier pour empêcher tout accès non autorisé.

  3. Exécutez l'Agent de capture instantanée de réplication à partir de l'invite de commandes ou démarrez le travail de l'Agent de capture instantanée pour générer une nouvelle capture instantanée. Pour plus d'informations, consultez Procédure : créer la capture instantanée initiale (programmation Transact-SQL de la réplication).

Pour modifier les propriétés de capture instantanée d'une publication de fusion existante

  1. Sur le serveur de publication, dans la base de données de publication, exécutez sp_changemergepublication. Spécifiez la valeur 1 pour @force_invalidate_snapshot et l'une des valeurs suivantes pour @property :

    • alt_snapshot_folder – spécifiez également un nouveau chemin d'accès au dossier de captures instantanées de remplacement pour @value.

    • compress_snapshot – spécifiez également la valeur true ou false pour @value pour indiquer si les fichiers de capture instantanée stockés dans le dossier de captures instantanées de remplacement sont compressés dans le format de fichier CAB.

    • pre_snapshot_script – spécifiez également pour @value le nom de fichier et le chemin d'accès complet d'un fichier .sql qui sera exécuté sur l'Abonné au cours de l'initialisation, avant que la capture instantanée initiale soit appliquée.

    • post_snapshot_script – spécifiez également pour @value le nom de fichier et le chemin d'accès complet d'un fichier .sql qui sera exécuté sur l'Abonné au cours de l'initialisation, après l'application de la capture instantanée initiale.

    • snapshot_in_defaultfolder – spécifiez également la valeur true ou false pour indiquer si la capture instantanée est disponible uniquement dans un emplacement non défini par défaut.

  2. Exécutez l'Agent de capture instantanée de réplication à partir de l'invite de commandes ou démarrez le travail de l'Agent de capture instantanée pour générer une nouvelle capture instantanée. Pour plus d'informations, consultez Procédure : créer la capture instantanée initiale (programmation Transact-SQL de la réplication).

Exemple

Cet exemple crée une publication qui utilise un dossier de captures instantanées de remplacement et une capture instantanée compressée.

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