Partager via


Procédure : afficher et modifier les paramètres de sécurité d'abonnement (programmation RMO)

Les paramètres de compte de sécurité (noms d'accès et mots de passe) requis par la réplication sont définis lors de la création de publications et d'abonnements. Vous pouvez modifier ces paramètres ultérieurement en utilisant les objets RMO (Replication Management Objects). Les classes et les propriétés RMO que vous utilisez dépendent du type d'agent et du type de connexion au serveur.

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 des informations d'identification, utilisez les Services de chiffrement fournis par Microsoft Windows .NET Framework.

Pour modifier toutes les instances d'un mot de passe stockées sur un serveur de réplication

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

  2. Créez une instance de la classe ReplicationServer au moyen de la connexion créée à l'étape 1.

  3. Appelez la méthode ChangeReplicationServerPasswords. Spécifiez les paramètres suivants :

    • security_mode – une valeur ReplicationSecurityMode qui spécifie le type d'authentification pour lequel toutes les instances du mot de passe sont modifiées.

    • login – la connexion pour laquelle toutes les instances du mot de passe sont modifiées.

    • password – la nouvelle valeur du mot de passe.

      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 des informations d'identification, utilisez les Services de chiffrement fournis par Windows .NET Framework.

      Notes

      Seul un membre du rôle serveur fixe sysadmin peut appeler cette méthode.

  4. Répétez les étapes 1-3 pour chaque serveur dans la topologie de réplication où le mot de passe doit être actualisé.

Pour modifier les paramètres de sécurité relatifs à l'Agent de distribution pour un abonnement par émission de données à une publication transactionnelle

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

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

  3. Définissez les propriétés PublicationName, DatabaseName, SubscriberName et SubscriptionDBName pour l'abonnement et définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext.

  4. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, soit les propriétés de l'abonnement ont été définies de manière incorrecte à l'étape 3, soit l'abonnement n'existe pas.

  5. Définissez une ou plusieurs des propriétés de sécurité suivantes sur l'instance de TransSubscription :

    • Pour modifier les informations d'identification relatives au compte Windows sous lequel l'agent s'exécute, définissez les champs Login et Password de SynchronizationAgentProcessSecurity.

    • Pour spécifier l'authentification intégrée Windows comme type d'authentification utilisé par l'agent lorsqu'il se connecte à l'Abonné, affectez la valeur true au champ WindowsAuthentication de la propriété SubscriberSecurity.

    • Pour spécifier l'authentification SQL Server comme type d'authentification utilisé par l'agent lorsqu'il se connecte à l'Abonné, affectez la valeur false au champ WindowsAuthentication de la propriété SubscriberSecurity et spécifiez les informations d'identification de connexion à l'Abonné pour les champs SqlStandardLogin et SqlStandardPassword.

      Notes

      La connexion de l'agent au serveur de distribution est toujours établie à l'aide des informations d'identification Windows spécifiées par SynchronizationAgentProcessSecurity. Ce compte permet également d'établir des connexions à distance à l'aide de l'authentification Windows.

  6. (Facultatif) Si vous avez spécifié la valeur true pour CachePropertyChanges, appelez la méthode CommitPropertyChanges pour valider les modifications sur le serveur. Si vous avez spécifié la valeur false pour CachePropertyChanges (valeur par défaut), les modifications sont envoyées immédiatement au serveur.

Pour modifier les paramètres de sécurité relatifs à l'Agent de distribution pour un abonnement par extraction à une publication transactionnelle

  1. Créez une connexion à l'Abonné en utilisant la classe ServerConnection.

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

  3. Définissez les propriétés PublicationName, DatabaseName, PublisherName et PublicationDBName pour l'abonnement et définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext.

  4. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, soit les propriétés de l'abonnement ont été définies de manière incorrecte à l'étape 3, soit l'abonnement n'existe pas.

  5. Définissez une ou plusieurs des propriétés de sécurité suivantes sur l'instance de TransPullSubscription :

    • Pour modifier les informations d'identification relatives au compte Windows sous lequel l'agent s'exécute, définissez les champs Login et Password de SynchronizationAgentProcessSecurity.

    • Pour spécifier l'authentification intégrée Windows comme type d'authentification utilisé par l'agent lorsqu'il se connecte au serveur de distribution, affectez la valeur true au champ WindowsAuthentication de la propriété DistributorSecurity.

    • Pour spécifier l'authentification SQL Server comme type d'authentification utilisé par l'agent lorsqu'il se connecte au serveur de distribution, affectez la valeur false au champ WindowsAuthentication de la propriété DistributorSecurity et spécifiez les informations d'identification de connexion au serveur de distribution pour les champs SqlStandardLogin et SqlStandardPassword.

      Notes

      La connexion de l'agent à l'Abonné est toujours établie à l'aide des informations d'identification Windows spécifiées par SynchronizationAgentProcessSecurity. Ce compte permet également d'établir des connexions à distance à l'aide de l'authentification Windows.

  6. (Facultatif) Si vous avez spécifié la valeur true pour CachePropertyChanges, appelez la méthode CommitPropertyChanges pour valider les modifications sur le serveur. Si vous avez spécifié la valeur false pour CachePropertyChanges (valeur par défaut), les modifications sont envoyées immédiatement au serveur.

Pour modifier les paramètres de sécurité relatifs à l'Agent de fusion pour un abonnement par extraction à une publication de fusion

  1. Créez une connexion à l'Abonné en utilisant la classe ServerConnection.

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

  3. Définissez les propriétés PublicationName, DatabaseName, PublisherName et PublicationDBName pour l'abonnement et définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext.

  4. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, soit les propriétés de l'abonnement ont été définies de manière incorrecte à l'étape 3, soit l'abonnement n'existe pas.

  5. Définissez une ou plusieurs des propriétés de sécurité suivantes sur l'instance de MergePullSubscription :

    • Pour modifier les informations d'identification relatives au compte Windows sous lequel l'agent s'exécute, définissez les champs Login et Password de SynchronizationAgentProcessSecurity.

    • Pour spécifier l'authentification intégrée Windows comme type d'authentification utilisé par l'agent lorsqu'il se connecte au serveur de distribution, affectez la valeur true au champ WindowsAuthentication de la propriété DistributorSecurity.

    • Pour spécifier l'authentification SQL Server comme type d'authentification utilisé par l'agent lorsqu'il se connecte au serveur de distribution, affectez la valeur false au champ WindowsAuthentication de la propriété DistributorSecurity et spécifiez les informations d'identification de connexion au serveur de distribution pour les champs SqlStandardLogin et SqlStandardPassword.

    • Pour spécifier l'authentification intégrée Windows comme type d'authentification utilisé par l'agent lorsqu'il se connecte au serveur de publication, affectez la valeur true au champ WindowsAuthentication de la propriété PublisherSecurity.

    • Pour spécifier l'authentification SQL Server comme type d'authentification utilisé par l'agent lorsqu'il se connecte au serveur de publication, affectez la valeur false au champ WindowsAuthentication de la propriété PublisherSecurity et spécifiez les informations d'identification de connexion au serveur de publication pour les champs SqlStandardLogin et SqlStandardPassword.

      Notes

      La connexion de l'agent à l'Abonné est toujours établie à l'aide des informations d'identification Windows spécifiées par SynchronizationAgentProcessSecurity. Ce compte permet également d'établir des connexions à distance à l'aide de l'authentification Windows.

  6. (Facultatif) Si vous avez spécifié la valeur true pour CachePropertyChanges, appelez la méthode CommitPropertyChanges pour valider les modifications sur le serveur. Si vous avez spécifié la valeur false pour CachePropertyChanges (valeur par défaut), les modifications sont envoyées immédiatement au serveur.

Pour modifier les paramètres de sécurité relatifs à l'Agent de fusion pour un abonnement par émission de données à une publication de fusion

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

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

  3. Définissez les propriétés PublicationName, DatabaseName, SubscriberName et SubscriptionDBName pour l'abonnement et définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext.

  4. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, soit les propriétés de l'abonnement ont été définies de manière incorrecte à l'étape 3, soit l'abonnement n'existe pas.

  5. Définissez une ou plusieurs des propriétés de sécurité suivantes sur l'instance de MergeSubscription :

    • Pour modifier les informations d'identification relatives au compte Windows sous lequel l'agent s'exécute, définissez les champs Login et Password de SynchronizationAgentProcessSecurity.

    • Pour spécifier l'authentification intégrée Windows comme type d'authentification utilisé par l'agent lorsqu'il se connecte à l'Abonné, affectez la valeur true au champ WindowsAuthentication de la propriété SubscriberSecurity.

    • Pour spécifier l'authentification SQL Server comme type d'authentification utilisé par l'agent lorsqu'il se connecte à l'Abonné, affectez la valeur false au champ WindowsAuthentication de la propriété SubscriberSecurity et spécifiez les informations d'identification de connexion à l'Abonné pour les champs SqlStandardLogin et SqlStandardPassword.

    • Pour spécifier l'authentification intégrée Windows comme type d'authentification utilisé par l'agent lorsqu'il se connecte au serveur de publication, affectez la valeur true au champ WindowsAuthentication de la propriété PublisherSecurity.

    • Pour spécifier l'authentification SQL Server comme type d'authentification utilisé par l'agent lorsqu'il se connecte au serveur de publication, affectez la valeur false au champ WindowsAuthentication de la propriété PublisherSecurity et spécifiez les informations d'identification de connexion au serveur de publication pour les champs SqlStandardLogin et SqlStandardPassword.

      Notes

      La connexion de l'agent au serveur de distribution est toujours établie à l'aide des informations d'identification Windows spécifiées par SynchronizationAgentProcessSecurity. Ce compte permet également d'établir des connexions à distance à l'aide de l'authentification Windows.

  6. (Facultatif) Si vous avez spécifié la valeur true pour CachePropertyChanges, appelez la méthode CommitPropertyChanges pour valider les modifications sur le serveur. Si vous avez spécifié la valeur false pour CachePropertyChanges (valeur par défaut), les modifications sont envoyées immédiatement au serveur.

Pour modifier les informations de connexion utilisées par un Abonné de mise à jour immédiate lorsqu'il se connecte au serveur de publication transactionnelle

  1. Créez une connexion à l'Abonné en utilisant la classe ServerConnection.

  2. Créez une instance de la classe ReplicationDatabase pour la base de données d'abonnement. Spécifiez Name et la classe ServerConnection créée à l'étape 1 pour la propriété ConnectionContext.

  3. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, soit les propriétés de la base de données ont été définies de manière incorrecte à l'étape 2, soit la base de données d'abonnement n'existe pas.

  4. Appelez la méthode LinkPublicationForUpdateableSubscription, en passant les paramètres suivants :

    • Publisher – nom du serveur de publication.

    • PublisherDB – nom de la base de données de publication.

    • Publication – nom de la publication à laquelle l'Abonné de mise à jour immédiate est abonné.

    • Distributor – nom du serveur de distribution.

    • PublisherSecurity – objet PublisherConnectionSecurityContext qui spécifie le type de mode de sécurité utilisé par l'Abonné de mise à jour immédiate lorsqu'il se connecte au serveur de publication et les informations d'identification de connexion pour cette connexion.

Exemple

Cet exemple vérifie le nom d'accès fourni et modifie tous les mots de passe relatifs à la connexion Windows fournie ou au compte de connexion SQL Server fourni, stockés par la réplication sur le serveur.

          // Set the Distributor and distribution database names.
            string serverName = publisherInstance;

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

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

                server = new ReplicationServer(conn);

                // Load server properties, if it exists.
                if (server.LoadProperties())
                {
                    string[] slash = new string[1];
                    slash[1] = @"\";

                    // If the login is in the form string\string, assume we are 
                    // changing the password for a Windows login.
                    if (login.Split(slash, StringSplitOptions.None).Length == 2)
                    {
                        //Change the password for the all connections that use
                        // the Windows login. 
                        server.ChangeReplicationServerPasswords(
                                ReplicationSecurityMode.Integrated, login, password);
                    }
                    else
                    {
                        // Change the password for the all connections that use
                        // the SQL Server login. 
                        server.ChangeReplicationServerPasswords(
                                ReplicationSecurityMode.SqlStandard, login, password);
                    }
                }
                else
                {
                    throw new ApplicationException(String.Format(
                        "Properties for {0} could not be retrieved.", publisherInstance));
                }
            }
            catch (Exception ex)
            {
                // Implement the appropriate error handling here. 
                throw new ApplicationException(String.Format(
                    "An error occured when changing agent login " +
                    " credentials on {0}.",serverName), ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Set the Distributor and distribution database names.
Dim serverName As String = publisherInstance

Dim server As ReplicationServer

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

Try
    ' Open the connection. 
    conn.Connect()

    server = New ReplicationServer(conn)

    ' Load server properties, if it exists.
    If server.LoadProperties() Then

        ' If the login is in the form string\string, assume we are 
        ' changing the password for a Windows login.
        If login.Split("\").Length = 2 Then

            ' Change the password for the all connections that use
            ' the Windows login. 
            server.ChangeReplicationServerPasswords( _
            ReplicationSecurityMode.Integrated, login, password)
        Else

            ' Change the password for the all connections that use
            ' the SQL Server login. 
            server.ChangeReplicationServerPasswords( _
            ReplicationSecurityMode.SqlStandard, login, password)
        End If
    Else
        Throw New ApplicationException(String.Format( _
         "Properties for {0} could not be retrieved.", publisherInstance))
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here. 
    Throw New ApplicationException(String.Format( _
     "An error occured when changing agent login " + _
     " credentials on {0}.", serverName), ex)
Finally
    conn.Disconnect()
End Try