Share via


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é

  • 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 l'accès à l'instantané pour cette publication s'effectue à partir de cet emplacement à la place ou en plus du dossier d'instantanés par défaut.

    • @compress_snapshot – spécifiez la valeur true si les fichiers d'instantanés dans le dossier d'instantanés 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 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 de publications, consultez Créer une 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 l'accès à l'instantané pour cette publication s'effectue à partir de cet emplacement à la place ou en plus du dossier d'instantanés par défaut.

    • @compress_snapshot – spécifiez la valeur true si les fichiers d'instantanés dans le dossier d'instantanés 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 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 de publications, consultez Créer une publication.

Pour modifier les propriétés d'instantané d'une publication transactionnelle ou d'instantané 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 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.

    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 d'instantané de réplication à 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, consultez Créer et appliquer l'instantané initial.

Pour modifier les propriétés d'instantané 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 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'Agent d'instantané de réplication à 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, consultez Créer et appliquer l'instantané initial.

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

Concepts

Autres emplacements du dossier d'instantané

Instantanés compressés

Exécuter des scripts avant et après l'application de l'instantané

Concepts liés aux procédures stockées système de réplication

Transférer des instantanés via FTP

Modifier les propriétés des publications et des articles