Procedura: Visualizzazione e modifica delle proprietà del server di pubblicazione e del server di distribuzione (programmazione RMO)

È possibile visualizzare e modificare a livello di programmazione le proprietà del server di pubblicazione e del server di distribuzione tramite oggetti RMO (Replication Management Objects).

Per visualizzare e modificare le proprietà del server di distribuzione

  1. Creare una connessione al server di distribuzione tramite la classe ServerConnection.

  2. Creare un'istanza della classe ReplicationServer. Passare l'oggetto ServerConnection indicato nel passaggio 1.

  3. (Facoltativo) Controllare la proprietà IsDistributor per verificare che il server attualmente connesso sia un server di distribuzione.

  4. Chiamare il metodo Load per ottenere le proprietà dal server.

  5. (Facoltativo) Per modificare le proprietà, specificare un nuovo valore per una o più proprietà del server di distribuzione che è possibile impostare sull'oggetto ReplicationServer.

  6. (Facoltativo) Se la proprietà CachePropertyChanges sull'oggetto ReplicationServer è impostata su true, chiamare il metodo CommitPropertyChanges per eseguire il commit delle modifiche nel server.

Per visualizzare e modificare le proprietà del database di distribuzione

  1. Creare una connessione al server di distribuzione tramite la classe ServerConnection.

  2. Creare un'istanza della classe DistributionDatabase. Specificare la proprietà relativa al nome e passare l'oggetto ServerConnection indicato nel passaggio 1.

  3. Chiamare il metodo LoadProperties per ottenere le proprietà dal server. Se il metodo restituisce false, il database con il nome specificato non esiste nel server.

  4. (Facoltativo) Per modificare le proprietà, specificare un nuovo valore per una delle proprietà dell'oggetto DistributionDatabase che è possibile impostare.

  5. (Facoltativo) Se la proprietà CachePropertyChanges sull'oggetto DistributionDatabase è impostata su true, chiamare il metodo CommitPropertyChanges per eseguire il commit delle modifiche nel server.

Per visualizzare e modificare le proprietà del server di pubblicazione

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection.

  2. Creare un'istanza della classe DistributionPublisher. Specificare la proprietà Name e passare l'oggetto ServerConnection indicato nel passaggio 1.

  3. (Facoltativo) Per modificare le proprietà, specificare un nuovo valore per una delle proprietà dell'oggetto DistributionPublisher che è possibile impostare.

  4. (Facoltativo) Se la proprietà CachePropertyChanges sull'oggetto DistributionPublisher è impostata su true, chiamare il metodo CommitPropertyChanges per eseguire il commit delle modifiche nel server.

Per modificare la password per la connessione amministrativa dal server di pubblicazione al server di distribuzione

  1. Creare una connessione al server di distribuzione tramite la classe ServerConnection.

  2. Creare un'istanza della classe ReplicationServer.

  3. Impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.

  4. Chiamare il metodo Load per ottenere le proprietà dell'oggetto.

  5. Chiamare il metodo ChangeDistributorPassword. Passare il nuovo valore della password per il parametro password.

    Nota sulla protezioneNota sulla protezione

    Se possibile, richiedere agli utenti di immettere le credenziali di protezione in fase di esecuzione. Se è necessario archiviare le credenziali, utilizzare i servizi di crittografia offerti da Microsoft Windows .NET Framework.

  6. (Facoltativo) Eseguire i passaggi seguenti per modificare la password in ogni server di pubblicazione remoto che utilizza questo server di distribuzione:

    1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection.

    2. Creare un'istanza della classe ReplicationServer.

    3. Impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 6a.

    4. Chiamare il metodo Load per ottenere le proprietà dell'oggetto.

    5. Chiamare il metodo ChangeDistributorPassword. Passare il nuovo valore della password indicato nel passaggio 5 per il parametro password.

Esempio

In questo esempio viene illustrato come modificare le proprietà del server di distribuzione e del database di distribuzione.

Nota sulla protezioneNota sulla protezione

Per evitare di archiviare le credenziali del codice, la nuova password del server di distribuzione viene specificata in fase di esecuzione.

          // 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 occured 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 occured when changing Distributor " + _
        " or distribution database properties.", ex)
Finally
    conn.Disconnect()
End Try