Procédure : configurer la publication et la distribution (programmation Transact-SQL de la réplication)

La publication et la distribution de réplication peuvent être configurées par programme à l'aide de procédures stockées de réplication.

Pour configurer la publication à l'aide d'un serveur de distribution local

  1. Exécutez sp_get_distributor (Transact-SQL) pour déterminer si le serveur est déjà configuré comme serveur de distribution.

    • Dans le jeu de résultats, si installed a la valeur 0, exécutez sp_adddistributor (Transact-SQL) sur le serveur de distribution, sur la base de données MASTER.

    • Dans le jeu de résultats, si distribution db installed a la valeur 0, exécutez sp_adddistributiondb (Transact-SQL) sur le serveur de distribution, sur la base de données MASTER. Spécifiez le nom de la base de données de distribution pour @database. En option, vous pouvez spécifier la période maximale de rétention des transactions pour @max_distretention et la période de rétention de l'historique pour @history_retention. Si une nouvelle base de données est créée, spécifiez les paramètres de propriété de base de données de votre choix.

  2. Sur le serveur de distribution, qui est également le serveur de publication, exécutez sp_adddistpublisher (Transact-SQL), en spécifiant pour @working_directory le partage UNC qui sera utilisé comme dossier de captures instantanées par défaut.

  3. Sur le serveur de publication, exécutez sp_replicationdboption (Transact-SQL). Spécifiez la base de données qui est publiée pour @dbname, le type de réplication pour @optname et la valeur true pour @value.

Pour configurer la publication à l'aide d'un serveur de distribution distant

  1. Exécutez sp_get_distributor (Transact-SQL) pour déterminer si le serveur est déjà configuré comme serveur de distribution.

    • Dans le jeu de résultats, si installed a la valeur 0, exécutez sp_adddistributor (Transact-SQL) sur le serveur de distribution, sur la base de données MASTER. Spécifiez un mot de passe fort pour @password. Ce mot de passe du compte distributor_admin sera utilisé par le serveur de publication lors de la connexion au serveur de distribution.

    • Dans le jeu de résultats, si distribution db installed a la valeur 0, exécutez sp_adddistributiondb (Transact-SQL) sur le serveur de distribution, sur la base de données MASTER. Spécifiez le nom de la base de données de distribution pour @database. En option, vous pouvez spécifier la période maximale de rétention des transactions pour @max_distretention et la période de rétention de l'historique pour @history_retention. Si une nouvelle base de données est créée, spécifiez les paramètres de propriété de base de données de votre choix.

  2. Sur le serveur de distribution, exécutez sp_adddistpublisher (Transact-SQL), en spécifiant pour @working_directory le partage UNC qui sera utilisé comme dossier de captures instantanées par défaut. Si le serveur de distribution doit utiliser l'authentification SQL Server lors de la connexion au serveur de publication, vous devez aussi spécifier la valeur 0 pour @security_mode et les informations de connexion Microsoft SQL Server pour @login et @password.

  3. Sur le serveur de publication, sur la base de données MASTER, exécutez sp_adddistributor (Transact-SQL). Spécifiez le mot de passe fort utilisé à l'étape 1 pour @password. Ce mot de passe sera utilisé par le serveur de publication lors de la connexion au serveur de distribution.

  4. Sur le serveur de publication, exécutez sp_replicationdboption (Transact-SQL). Spécifiez la base de données qui est publiée pour @dbname, le type de réplication pour @optname et la valeur true pour @value.

Exemple

L'exemple ci-dessous montre comment configurer par programme la publication et la distribution. Dans cet exemple, le nom du serveur configuré comme serveur de publication et serveur de distribution local est fourni au moyen de variables de script.

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

-- Install the Distributor and the distribution database.
DECLARE @distributor AS sysname;
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @directory AS nvarchar(500);
DECLARE @publicationDB AS sysname;
-- Specify the Distributor name.
SET @distributor = $(DistPubServer);
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);
-- Specify the replication working directory.
SET @directory = N'\\' + $(DistPubServer) + '\repldata';
-- Specify the publication database.
SET @publicationDB = N'AdventureWorks2008R2'; 

-- Install the server MYDISTPUB as a Distributor using the defaults,
-- including autogenerating the distributor password.
USE master
EXEC sp_adddistributor @distributor = @distributor;

-- Create a new distribution database using the defaults, including
-- using Windows Authentication.
USE master
EXEC sp_adddistributiondb @database = @distributionDB, 
    @security_mode = 1;
GO

-- Create a Publisher and enable AdventureWorks2008R2 for replication.
-- Add MYDISTPUB as a publisher with MYDISTPUB as a local distributor
-- and use Windows Authentication.
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);

USE [distribution]
EXEC sp_adddistpublisher @publisher=@publisher, 
    @distribution_db=@distributionDB, 
    @security_mode = 1;
GO