Afficher et modifier les propriétés d'un serveur de distribution ou d'un serveur de publication

S’applique à : SQL Server Azure SQL Managed Instance

Cette rubrique décrit comment afficher et modifier les propriétés du serveur de distribution et du serveur de publication dans SQL Server à l’aide de SQL Server Management Studio, Transact-SQL ou Replication Management Objects (RMO).

Dans cette rubrique

Avant de commencer

Recommandations

  • Pour les serveurs de publication exécutant des versions antérieures à Microsoft SQL Server 2005 (9.x), un utilisateur avec le rôle serveur fixe sysadmin peut enregistrer des abonnés dans la page Abonnés. À partir de SQL Server 2005 (9.x), il n’est plus nécessaire d’inscrire de manière explicite les abonnés pour la réplication.

Sécurité

Lorsque c'est possible, demande aux utilisateurs de fournir les informations d'identification au moment de l'exécution.

Utilisation de SQL Server Management Studio

Pour afficher et modifier les propriétés du serveur de distribution

  1. Connectez-vous au serveur de distribution dans SQL Server Management Studio, puis développez le nœud du serveur.

  2. Cliquez avec le bouton droit sur le dossier Réplication , puis cliquez sur Propriétés du serveur de distribution.

  3. Affichez et modifiez les propriétés dans la boîte de dialogue Propriétés du serveur de distribution - <serveur_distribution>.

    • Pour afficher et modifier les propriétés d’une base de données de distribution, cliquez sur le bouton des propriétés (...) pour la base de données dans la page Général de la boîte de dialogue.

    • Pour afficher et modifier les propriétés du serveur de publication associées au serveur de distribution, cliquez sur le bouton des propriétés (...) pour le serveur de publication sur la page Serveurs de publication de la boîte de dialogue.

    • Pour accéder aux profils des agents de réplication, cliquez sur le bouton Profils par défaut sur la page Général de la boîte de dialogue. Pour plus d'informations, voir Replication Agent Profiles.

    • Pour modifier le mot de passe du compte utilisé lors de l'exécution des procédures stockées administratives sur le serveur de publication et de la mise à jour des informations sur le serveur de distribution, entrez un nouveau mot de passe dans les zones Mot de passe et Confirmer le mot de passe sur la page Serveurs de publication de la boîte de dialogue. Pour plus d’informations, consultez Protéger le serveur de distribution.

  4. Modifiez les propriétés si nécessaire, puis cliquez sur OK.

Pour afficher et modifier les propriétés du serveur de publication

  1. Connectez-vous au serveur de publication dans SQL Server Management Studio, puis développez le nœud du serveur.

  2. Cliquez avec le bouton droit sur le dossier Réplication , puis cliquez sur Propriétés du serveur de publication.

  3. Affichez et modifiez les propriétés dans la boîte de dialogue Propriétés du serveur de publication -< serveur_publication >.

    • Un utilisateur du rôle serveur fixe sysadmin peut activer des bases de données pour la réplication sur la page Bases de données de publication . L'activation d'une base de données ne publie pas cette dernière, elle permet plutôt à n'importe quel utilisateur du rôle de base de données fixe db_owner de cette base de données de créer une ou plusieurs publications dans la base de données.
  4. Modifiez les propriétés si nécessaire, puis cliquez sur OK.

Utilisation de Transact-SQL

Les propriétés du serveur de publication et du serveur de distribution peuvent être affichées par programme en utilisant des procédures stockées de réplication.

Pour afficher les propriétés du serveur de distribution et de la base de données de distribution

  1. Exécutez sp_helpdistributor pour retourner des informations sur le serveur de distribution, la base de données de distribution et le répertoire de travail.

  2. Exécutez sp_helpdistributiondb pour retourner les propriétés d'une base de données de distribution spécifiée.

Pour modifier les propriétés du serveur de distribution et de la base de données de distribution

  1. Sur le serveur de distribution, exécutez sp_changedistributor_property pour modifier les propriétés du serveur de distribution.

  2. Sur le serveur de distribution, exécutez sp_changedistributiondb pour modifier les propriétés de la base de données de distribution.

  3. Sur le serveur de distribution, exécutez sp_changedistributor_password pour modifier le mot de passe du 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 dans un fichier de script, sécurisez le fichier pour empêcher tout accès non autorisé.

  4. Sur le serveur de distribution, exécutez sp_changedistpublisher pour modifier les propriétés d'un serveur de publication à l'aide du serveur de distribution.

Exemples (Transact-SQL)

L’exemple de script Transact-SQL suivant retourne des informations sur le serveur de distribution et sur la base de données de distribution.

-- View information about the Distributor, distribution database, 
-- working directory, and SQL Server Agent user account. 
USE master
EXEC sp_helpdistributor;
GO
-- View information about the specified distribution database. 
USE distribution
EXEC sp_helpdistributiondb;
GO

Cet exemple modifie les périodes de rétention du serveur de distribution, le mot de passe utilisé lors de la connexion au serveur de distribution et l'intervalle auquel le serveur de distribution vérifie l'état de différents Agents de réplication (également appelé intervalle d'interrogation).

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 dans un fichier de script, sécurisez le fichier pour empêcher tout accès non autorisé.


-- Change the heartbeat interval at the Distributor to 5 minutes. 
USE master 
exec sp_changedistributor_property 
    @property = N'heartbeat_interval', 
    @value = 5;
GO
DECLARE @distributionDB AS sysname;
SET @distributionDB = N'distribution';

-- Change the history retention period to 24 hours and the
-- maximum retention period to 48 hours.  
USE distribution
EXEC sp_changedistributiondb @distributionDB, N'history_retention', 24
EXEC sp_changedistributiondb @distributionDB, N'max_distretention', 48
GO
-- Change the password on the Distributor. 
-- To avoid storing the password in the script file, the value is passed 
-- into SQLCMD as a scripting variable. 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".
USE master
EXEC sp_changedistributor_password $(Password)
GO

Utilisation d'objets RMO (Replication Management Objects)

Pour afficher et modifier les propriétés du serveur de distribution

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

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

  3. (Facultatif) Vérifiez la propriété IsDistributor pour vérifier que le serveur actuellement connecté est un serveur de distribution.

  4. Appelez la méthode Load pour obtenir les propriétés du serveur.

  5. (Facultatif) Pour modifier des propriétés, modifiez la valeur d'une ou de plusieurs des propriétés du serveur de distribution qui peuvent être définies sur l'objet ReplicationServer .

  6. (Facultatif) Si la propriété CachePropertyChanges sur l'objet ReplicationServer a la valeur true, appelez la méthode CommitPropertyChanges pour valider les modifications sur le serveur.

Pour afficher et modifier les propriétés de base de données de distribution

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

  2. Créez une instance de la classe DistributionDatabase. Spécifiez la propriété de nom et passez l'objet ServerConnection créé à l'étape 1.

  3. Appelez la méthode LoadProperties pour obtenir les propriétés du serveur. Si cette méthode retourne false, la base de données avec le nom spécifié n'existe pas sur le serveur.

  4. (Facultatif) Pour modifier des propriétés, modifiez la valeur d'une des propriétés DistributionDatabase qui peuvent être définies.

  5. (Facultatif) Si la propriété CachePropertyChanges sur l'objet DistributionDatabase a la valeur true, appelez la méthode CommitPropertyChanges pour valider les modifications sur le serveur.

Pour afficher et modifier les propriétés du serveur de publication

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

  2. Créez une instance de la classe DistributionPublisher. Spécifiez la propriété Name et passez l'objet ServerConnection créé à l'étape 1.

  3. (Facultatif) Pour modifier des propriétés, modifiez la valeur d'une des propriétés DistributionPublisher qui peuvent être définies.

  4. (Facultatif) Si la propriété CachePropertyChanges sur l'objet DistributionPublisher a la valeur true, appelez la méthode CommitPropertyChanges pour valider les modifications sur le serveur.

Pour modifier le mot de passe pour la connexion administrative du serveur de publication au serveur de distribution

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

  2. Créez une instance de la classe ReplicationServer.

  3. Définissez la propriété ConnectionContext en spécifiant la connexion créée à l'étape 1.

  4. Appelez la méthode Load pour obtenir les propriétés de l'objet.

  5. Appelez la méthode ChangeDistributorPassword . Passez la nouvelle valeur de mot de passe pour le paramètre password .

    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. (Facultatif) Effectuez la procédure suivante pour modifier le mot de passe sur chaque serveur de publication distant qui utilise ce serveur de distribution :

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

    2. Créez une instance de la classe ReplicationServer.

    3. Définissez la propriété ConnectionContext en spécifiant la connexion créée à l'étape 6a.

    4. Appelez la méthode Load pour obtenir les propriétés de l'objet.

    5. Appelez la méthode ChangeDistributorPassword . Passez la nouvelle valeur de mot de passe spécifiée à l'étape 5 pour le paramètre password .

Exemple (RMO)

Cet exemple montre comment modifier les propriétés du serveur de distribution et de la base de données de distribution.

Important

Pour éviter de stocker les informations d'identification dans le code, le nouveau mot de passe du serveur de distribution est fourni au moment de l'exécution.

// Set the Distributor and distribution database names.
string distributionDbName = "distribution";
string distributorName = publisherInstance;

ReplicationServer distributor;
DistributionDatabase distributionDb;

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

try
{
    // Open the connection. 
    conn.Connect();

    distributor = new ReplicationServer(conn);

    // Load Distributor properties, if it is installed.
    if (distributor.LoadProperties())
    {
        // Password supplied at runtime.
        distributor.ChangeDistributorPassword(password);
        distributor.AgentCheckupInterval = 5;

        // Save changes to the Distributor properties.
        distributor.CommitPropertyChanges();
    }
    else
    {
        throw new ApplicationException(
            String.Format("{0} is not a Distributor.", publisherInstance));
    }

    // Create an object for the distribution database 
    // using the open Distributor connection.
    distributionDb = new DistributionDatabase(distributionDbName, conn);

    // Change distribution database properties.
    if (distributionDb.LoadProperties())
    {
        // Change maximum retention period to 48 hours and history retention 
        // period to 24 hours.
        distributionDb.MaxDistributionRetention = 48;
        distributionDb.HistoryRetention = 24;

        // Save changes to the distribution database properties.
        distributionDb.CommitPropertyChanges();
    }
    else
    {
        // Do something here if the distribution database does not exist.
    }
}
catch (Exception ex)
{
    // Implement the appropriate error handling here. 
    throw new ApplicationException("An error occurred when changing Distributor " +
        " or distribution database properties.", ex);
}
finally
{
    conn.Disconnect();
}
' Set the Distributor and distribution database names.
Dim distributionDbName As String = "distribution"
Dim distributorName As String = publisherInstance

Dim distributor As ReplicationServer
Dim distributionDb As DistributionDatabase

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

Try
    ' Open the connection. 
    conn.Connect()

    distributor = New ReplicationServer(conn)

    ' Load Distributor properties, if it is installed.
    If distributor.LoadProperties() Then
        ' Password supplied at runtime.
        distributor.ChangeDistributorPassword(password)
        distributor.AgentCheckupInterval = 5

        ' Save changes to the Distributor properties.
        distributor.CommitPropertyChanges()
    Else
        Throw New ApplicationException( _
            String.Format("{0} is not a Distributor.", publisherInstance))
    End If

    ' Create an object for the distribution database 
    ' using the open Distributor connection.
    distributionDb = New DistributionDatabase(distributionDbName, conn)

    ' Change distribution database properties.
    If distributionDb.LoadProperties() Then
        ' Change maximum retention period to 48 hours and history retention 
        ' period to 24 hours.
        distributionDb.MaxDistributionRetention = 48
        distributionDb.HistoryRetention = 24

        ' Save changes to the distribution database properties.
        distributionDb.CommitPropertyChanges()
    Else
        ' Do something here if the distribution database does not exist.
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here. 
    Throw New ApplicationException("An error occurred when changing Distributor " + _
        " or distribution database properties.", ex)
Finally
    conn.Disconnect()
End Try