如何查看和修改发布服务器和分发服务器属性(RMO 编程)

您可以使用复制管理对象 (RMO) 以编程的方式查看和修改发布服务器和分发服务器属性。

查看和修改分发服务器属性

  1. 使用 ServerConnection 类创建与分发服务器的连接。

  2. 创建 ReplicationServer 类的实例。 传递步骤 1 中的 ServerConnection 对象。

  3. (可选)检查 IsDistributor 属性以验证当前连接到的服务器是否为分发服务器。

  4. 调用 Load 方法获取该服务器的属性。

  5. (可选)若要更改属性,请为一个或多个可在 ReplicationServer 对象上设置的分发服务器属性设置新值。

  6. (可选)如果将 ReplicationServer 对象的 CachePropertyChanges 属性设置为 true,则调用 CommitPropertyChanges 方法来提交对服务器的更改。

查看和修改分发数据库属性

  1. 使用 ServerConnection 类创建与分发服务器的连接。

  2. 创建 DistributionDatabase 类的实例。 指定名称属性并传递步骤 1 中的 ServerConnection 对象。

  3. 调用 LoadProperties 方法获取该服务器的属性。 如果此方法返回 false,则该服务器上不存在指定名称的数据库。

  4. (可选)若要更改属性,请为其中一个可以设置的 DistributionDatabase 属性设置一个新值。

  5. (可选)如果将 DistributionDatabase 对象的 CachePropertyChanges 属性设置为 true,则调用 CommitPropertyChanges 方法来提交对服务器的更改。

查看和修改发布服务器属性

  1. 使用 ServerConnection 类创建与发布服务器的连接。

  2. 创建 DistributionPublisher 类的实例。 指定 Name 属性并传递步骤 1 中的 ServerConnection 对象。

  3. (可选)若要更改属性,请为其中一个可以设置的 DistributionPublisher 属性设置一个新值。

  4. (可选)如果将 DistributionPublisher 对象的 CachePropertyChanges 属性设置为 true,则调用 CommitPropertyChanges 方法来提交对服务器的更改。

更改从发布服务器到分发服务器的管理连接的密码

  1. 使用 ServerConnection 类创建与分发服务器的连接。

  2. 创建 ReplicationServer 类的实例。

  3. ConnectionContext 属性设置为步骤 1 中创建的连接。

  4. 调用 Load 方法获取该对象的属性。

  5. 调用 ChangeDistributorPassword 方法。 为 password 参数传递新的密码值。

    安全说明安全说明

    如果可能,请在运行时提示用户输入安全凭据。 如果必须存储凭据,请使用 Microsoft Windows .NET Framework 提供的 Cryptographic Services(加密服务)。

  6. (可选)执行下列步骤以更改每个使用该分发服务器的远程发布服务器上的密码:

    1. 使用 ServerConnection 类创建与发布服务器的连接。

    2. 创建 ReplicationServer 类的实例。

    3. ConnectionContext 属性设置为步骤 6a 中创建的连接。

    4. 调用 Load 方法获取该对象的属性。

    5. 调用 ChangeDistributorPassword 方法。 为 password 参数传递步骤 5 中的新密码值。

示例

此示例显示如何更改分发和分发数据库属性。

安全说明安全说明

若要避免将凭据存储在代码中,应当在运行时提供新分发服务器密码。

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