Partager via


Configurer la publication et la distribution

Cette rubrique explique comment configurer la publication et la distribution dans SQL Server 2014 à l’aide de SQL Server Management Studio, Transact-SQL ou RMO (Replication Management Objects).

Avant de commencer

Sécurité

Pour plus d’informations, consultez Déploiement de la réplication sécurisée.

Utilisation de SQL Server Management Studio

Configurez la distribution à l'aide de l'Assistant Nouvelle publication ou de l'Assistant Configuration de la distribution. Une fois le serveur de distribution configuré, affichez et modifiez les propriétés dans la boîte de dialogue Propriétés du serveur de distribution - <Serveur de distribution> . Utilisez l'Assistant Configuration de la distribution si vous voulez configurer un serveur de distribution de telle sorte que les membres des rôles de base de données fixes db_owner puissent créer des publications, ou parce que vous voulez configurer un serveur distant de distribution qui ne soit pas serveur de publication.

Pour configurer la distribution

  1. Dans Microsoft SQL Server Management Studio, connectez-vous au serveur qui servira de serveur de distribution (souvent, le serveur de publication et le serveur de distribution sont les mêmes), puis développez le nœud du serveur.

  2. Cliquez avec le bouton droit sur le dossier Réplication , puis cliquez sur Configurer la distribution.

  3. Suivez les instructions de l'Assistant Configuration de la distribution pour :

    • Sélectionner un serveur de distribution. Pour utiliser un serveur de distribution local, sélectionnez «< ServerName> » fera office de propre serveur de distribution . SQL Server créez une base de données de distribution et un journal. Pour utiliser un serveur de distribution distant, sélectionnez l'option Utiliser le serveur suivant comme serveur de distribution, puis sélectionnez un serveur. Ce dernier doit déjà être configuré comme un serveur de distribution et le serveur de publication configuré pour utiliser ce serveur de distribution. Pour plus d’informations, consultez Activer un serveur de publication distant sur un serveur de distribution (SQL Server Management Studio).

      Si vous sélectionnez un serveur de distribution distant, vous devez entrer un mot de passe dans la page Mot de passe d'administration pour les connexions effectuées à partir du serveur de publication sur le serveur de distribution. Ce mot de passe doit correspondre à celui qui a été spécifié lorsque le serveur de publication a été activé sur le serveur de distribution distant.

    • Spécifier un dossier d'instantanés racine (pour un serveur de distribution local). Le dossier d'instantanés correspond à un simple répertoire que vous définissez sous la forme d'un partage ; les agents qui lisent et écrivent dans le dossier doivent disposer des autorisations suffisantes pour pouvoir y accéder. Chaque serveur de publication qui utilise ce serveur de distribution crée un dossier sous le dossier racine, et chaque publication crée des dossiers sous le dossier Serveur de publication, pour y stocker les fichiers d'instantanés. Pour plus d’informations sur une sécurisation appropriée du dossier, consultez Sécuriser le dossier d’instantané.

    • Spécifier la base de données de distribution (pour un serveur de distribution local). La base de données de distribution stocke les métadonnées et les données d'historique pour tous les types de réplications, et les transactions pour la réplication transactionnelle.

    • Permettre en option aux autres serveurs de publication d'utiliser le serveur de distribution. Si d'autres serveurs de publication sont activés pour utiliser le serveur de distribution, vous devez entrer un mot de passe dans la page Mot de passe du serveur de distribution pour les connexions effectuées à partir de ces serveurs de publication sur le serveur de distribution.

    • Scripter en option les paramètres de configuration. Pour plus d'informations, voir Scripting Replication.

Utilisation de Transact-SQL

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é en tant que serveur de distribution.

    • Si la valeur de installé dans le jeu de résultats est 0, exécutez sp_adddistributor (Transact-SQL) sur le serveur de distribution sur la base de données master.

    • Si la valeur de la base de données de distribution installée dans le jeu de résultats est 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 le partage UNC qui sera utilisé comme dossier instantané par défaut pour @working_directory.

  3. Sur le serveur de publication, exécutez sp_replicationdboption (Transact-SQL). Spécifiez la base de données 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é en tant que serveur de distribution.

    • Si la valeur de installé dans le jeu de résultats est 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.

    • Si la valeur de la base de données de distribution installée dans le jeu de résultats est 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 le partage UNC qui sera utilisé comme dossier instantané par défaut pour @working_directory. Si le serveur de distribution utilise l’authentification SQL Server lors de la connexion au serveur de publication, vous devez également spécifier la valeur 0 pour @security_mode et les informations de connexion microsoft SQL Server pour @login et @password.

  3. Sur la base de données master du serveur de publication, 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 @optnameet la valeur true pour @value.

Exemple (Transact-SQL)

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. La publication et la distribution de réplication peuvent être configurées par programme à l'aide de procédures stockées de réplication.

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

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

Utilisation d'objets RMO (Replication Management Objects)

Pour configurer la publication et la distribution sur un serveur unique

  1. Créez une connexion au serveur en utilisant la classe ServerConnection .

  2. Créez une instance de la classe ReplicationServer. Passez l'objet ServerConnection créé à l'étape 1.

  3. Créez une instance de la classe DistributionDatabase.

  4. Affectez le nom de la base de données à la propriété Name et le ConnectionContext créé à l'étape 1 à la propriété ServerConnection .

  5. Installez le serveur de distribution en appelant la méthode InstallDistributor . Passez l'objet DistributionDatabase créé à l'étape 3.

  6. Créez une instance de la classe DistributionPublisher.

  7. Définissez les propriétés suivantes de DistributionPublisher:

  8. Appelez la méthode Create .

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

  1. Créez une connexion au serveur de distribution distant en utilisant la classe ServerConnection .

  2. Créez une instance de la classe ReplicationServer. Passez l'objet ServerConnection créé à l'étape 1.

  3. Créez une instance de la classe DistributionDatabase.

  4. Affectez le nom de la base de données à la propriété Name et le ConnectionContext créé à l'étape 1 à la propriété ServerConnection .

  5. Installez le serveur de distribution en appelant la méthode InstallDistributor . Spécifiez un mot de passe sécurisé (utilisé par le serveur de publication lors de la connexion au serveur de distribution distant) et l'objet DistributionDatabase créé à l'étape 3. Pour plus d’informations, consultez Protéger le serveur de distribution.

    Important

    Lorsque c'est possible, demande aux utilisateurs de fournir les informations d'identification au moment de l'exécution. Si vous devez stocker des informations d'identification, utilisez les Services de chiffrement fournis par Microsoft Windows .NET Framework.

  6. Créez une instance de la classe DistributionPublisher.

  7. Définissez les propriétés suivantes de DistributionPublisher:

  8. Appelez la méthode Create .

  9. Créez une connexion au serveur de publication local en utilisant la classe ServerConnection .

  10. Créez une instance de la classe ReplicationServer. Passez l’objet ServerConnection créé à l’étape 9.

  11. Appelez la méthode InstallDistributor . Passez le nom du serveur de distribution distant et son mot de passe spécifié à l'étape 5.

    Important

    Lorsque c'est possible, demande aux utilisateurs de fournir les informations d'identification au moment de l'exécution. Si vous devez stocker des informations d'identification, utilisez les Services de chiffrement fournis par Windows .NET Framework.

Exemple (RMO)

Vous pouvez configurer par programme la publication et la distribution de la réplication à l'aide d'objets RMO (Replication Management Objects).

// Set the server and database names
string distributionDbName = "distribution";
string publisherName = publisherInstance;
string publicationDbName = "AdventureWorks2012";

DistributionDatabase distributionDb;
ReplicationServer distributor;
DistributionPublisher publisher;
ReplicationDatabase publicationDb;

// Create a connection to the server using Windows Authentication.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the server acting as the Distributor 
    // and local Publisher.
    conn.Connect();

    // Define the distribution database at the Distributor,
    // but do not create it now.
    distributionDb = new DistributionDatabase(distributionDbName, conn);
    distributionDb.MaxDistributionRetention = 96;
    distributionDb.HistoryRetention = 120;

    // Set the Distributor properties and install the Distributor.
    // This also creates the specified distribution database.
    distributor = new ReplicationServer(conn);
    distributor.InstallDistributor((string)null, distributionDb);

    // Set the Publisher properties and install the Publisher.
    publisher = new DistributionPublisher(publisherName, conn);
    publisher.DistributionDatabase = distributionDb.Name;
    publisher.WorkingDirectory = @"\\" + publisherName + @"\repldata";
    publisher.PublisherSecurity.WindowsAuthentication = true;
    publisher.Create();

    // Enable AdventureWorks2012 as a publication database.
    publicationDb = new ReplicationDatabase(publicationDbName, conn);

    publicationDb.EnabledTransPublishing = true;
    publicationDb.EnabledMergePublishing = true;
}
catch (Exception ex)
{
    // Implement appropriate error handling here.
    throw new ApplicationException("An error occured when installing distribution and publishing.", ex);
}
finally
{
    conn.Disconnect();
}
' Set the server and database names
Dim distributionDbName As String = "distribution"
Dim publisherName As String = publisherInstance
Dim publicationDbName As String = "AdventureWorks2012"

Dim distributionDb As DistributionDatabase
Dim distributor As ReplicationServer
Dim publisher As DistributionPublisher
Dim publicationDb As ReplicationDatabase

' Create a connection to the server using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the server acting as the Distributor 
    ' and local Publisher.
    conn.Connect()

    ' Define the distribution database at the Distributor,
    ' but do not create it now.
    distributionDb = New DistributionDatabase(distributionDbName, conn)
    distributionDb.MaxDistributionRetention = 96
    distributionDb.HistoryRetention = 120

    ' Set the Distributor properties and install the Distributor.
    ' This also creates the specified distribution database.
    distributor = New ReplicationServer(conn)
    distributor.InstallDistributor((CType(Nothing, String)), distributionDb)

    ' Set the Publisher properties and install the Publisher.
    publisher = New DistributionPublisher(publisherName, conn)
    publisher.DistributionDatabase = distributionDb.Name
    publisher.WorkingDirectory = "\\" + publisherName + "\repldata"
    publisher.PublisherSecurity.WindowsAuthentication = True
    publisher.Create()

    ' Enable AdventureWorks2012 as a publication database.
    publicationDb = New ReplicationDatabase(publicationDbName, conn)

    publicationDb.EnabledTransPublishing = True
    publicationDb.EnabledMergePublishing = True

Catch ex As Exception
    ' Implement appropriate error handling here.
    Throw New ApplicationException("An error occured when installing distribution and publishing.", ex)

Finally
    conn.Disconnect()

End Try

Voir aussi

Afficher et modifier les propriétés d’un serveur de distribution ou d’un serveur de publication
Replication System Stored Procedures Concepts
Configurer la distribution
Concepts liés à Replication Management Objects
Configurer la réplication pour les groupes de disponibilité AlwaysOn (SQL Server)