Configurer les propriétés d'instantané (programmation Transact-SQL de la réplication)

Les propriétés d'instantané 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 d'instantané lors de la création d'une publication transactionnelle ou d'instantané

  1. 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 à l'instantané :

    • @alt_snapshot_folder : spécifiez un chemin d’accès si le instantané de cette composition est accessible à partir de cet emplacement au lieu ou en plus du dossier par défaut instantané.

    • @compress_snapshot : spécifiez la valeur true si les fichiers instantané dans le dossier instantané de remplacement sont compressés au format de fichier CAB 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 l'instantané initial soit appliqué.

    • @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 l'instantané initial.

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

    Pour plus d'informations sur la création des publications, consultez Create a Publication.

Pour configurer les propriétés d'instantané 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 à l'instantané :

    • @alt_snapshot_folder : spécifiez un chemin d’accès si le instantané de cette composition est accessible à partir de cet emplacement au lieu ou en plus du dossier par défaut instantané.

    • @compress_snapshot : spécifiez la valeur true si les fichiers instantané dans le dossier instantané de remplacement sont compressés au 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 l'instantané initial soit appliqué.

    • @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 l'instantané initial.

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

  2. Pour plus d'informations sur la création des publications, consultez Create a Publication.

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

  1. Dans la base de données de publication sur le serveur 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 d'instantanés de remplacement pour @value.

    • compress_snapshot – spécifiez également la valeur true ou false pour @value pour indiquer si les fichiers d'instantanés stockés dans le dossier d'instantanés 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 l'instantané initial soit appliqué.

    • 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 l'instantané initial.

    • snapshot_in_defaultfolder – spécifiez également la valeur true ou false pour indiquer si l'instantané 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.

    Important

    Lorsque c'est possible, demande aux utilisateurs de fournir les informations d'identification au moment de l'exécution. Si vous devez enregistrer les informations d'identification dans un fichier de script, vous devez sécuriser le fichier pour empêcher un accès non autorisé.

  3. Exécutez l' Replication Snapshot Agent à partir de l'invite de commandes ou démarrez le travail de l'Agent d'instantané pour générer un nouvel instantané. Pour plus d’informations, voir Create and Apply the Initial Snapshot.

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

  1. Dans la base de données de publication sur le serveur 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 d'instantanés de remplacement pour @value.

    • compress_snapshot – spécifiez également la valeur true ou false pour @value pour indiquer si les fichiers d'instantanés stockés dans le dossier d'instantanés 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 l'instantané initial soit appliqué.

    • 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 l'instantané initial.

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

  2. Exécutez l' Replication Snapshot Agent à partir de l'invite de commandes ou démarrez le travail de l'Agent d'instantané pour générer un nouvel instantané. Pour plus d’informations, voir Create and Apply the Initial Snapshot.

Exemple

Cet exemple crée une publication qui utilise un dossier d'instantanés de remplacement et un instantané compressé.

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

Voir aussi

Autres emplacements du dossier d'instantané
Instantanés compressés
Exécuter des scripts avant et après l’application de l’instantané
Replication System Stored Procedures Concepts
Transférer des instantanés via FTP
Modifier les propriétés des publications et des articles