Как просмотреть и изменить свойства издателя и распространителя (программирование объектов RMO)

Свойства издателя и распространителя можно просматривать и изменять программно с помощью объектов RMO.

Просмотр и изменение свойств распространителя

  1. Создайте соединение с распространителем с помощью класса ServerConnection.

  2. Создайте экземпляр класса ReplicationServer. Передайте объект ServerConnection, созданный на шаге 1.

  3. (Необязательно) Проверьте свойство IsDistributor, чтобы убедиться, что подключенный в настоящее время сервер является распространителем.

  4. Чтобы получить свойства с сервера, необходимо вызвать метод Load.

  5. (Необязательно) Чтобы изменить свойства, укажите новое значение для одного или нескольких свойств распространителя, которые могут принимать значение ReplicationServer.

  6. Если свойство CachePropertyChanges объекта ReplicationServer имеет значение true, для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно).

Просмотр и изменение свойств базы данных-распространителя

  1. Создайте соединение с распространителем с помощью класса ServerConnection.

  2. Создайте экземпляр класса DistributionDatabase. Укажите свойство Name и передайте объект ServerConnection из шага 1.

  3. Чтобы получить свойства с сервера, необходимо вызвать метод LoadProperties. Если этот метод вернет значение false, значит, на сервере не существует базы данных с указанным именем.

  4. Чтобы изменить свойства, установите новое значение для одного из свойств DistributionDatabase, которое можно установить (необязательно).

  5. Если свойство CachePropertyChanges объекта DistributionDatabase имеет значение true, для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно).

Просмотр и изменение свойств издателя

  1. Создайте соединение с издателем с помощью класса ServerConnection.

  2. Создайте экземпляр класса DistributionPublisher. Укажите свойство Name и передайте объект ServerConnection из шага 1.

  3. Чтобы изменить свойства, установите новое значение для одного из свойств DistributionPublisher, которое можно установить (необязательно).

  4. Если свойство CachePropertyChanges объекта DistributionPublisher имеет значение true, для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно).

Изменение пароля для административного соединения между издателем и распространителем

  1. Создайте соединение с распространителем с помощью класса ServerConnection.

  2. Создайте экземпляр класса ReplicationServer.

  3. В свойстве ConnectionContext укажите созданное на шаге 1 соединение.

  4. Чтобы получить свойства объекта, вызовите метод Load.

  5. Вызовите метод ChangeDistributorPassword. Передайте новое значение пароля в параметре password.

    Примечание по безопасностиПримечание по безопасности

    По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения. Если необходимо хранить учетные данные, используйте службы шифрования, предоставляемые платформой Microsoft Windows .NET Framework.

  6. (Необязательно) Выполните следующие шаги, чтобы изменить пароль на каждом удаленном издателе, использующем данный распространитель.

    1. Создайте соединение с издателем с помощью класса ServerConnection.

    2. Создайте экземпляр класса ReplicationServer.

    3. Укажите в качестве свойства ConnectionContext соединение, созданное в шаге 6a.

    4. Чтобы получить свойства объекта, вызовите метод Load.

    5. Вызовите метод ChangeDistributorPassword. Передайте новое значение пароля из шага 5 в параметре password.

Пример

В этом примере показано, как изменить свойства распространителя и базы данных-распространителя.

Примечание по безопасностиПримечание по безопасности

Чтобы учетные данные не хранились в коде, новый пароль для распространителя указывается во время выполнения.

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