如何配置发布和分发(RMO 编程)

可以通过使用复制管理对象 (RMO) 以编程方式配置复制发布和分发。

在单个服务器上配置发布和分发

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

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

  3. 创建 DistributionDatabase 类的实例。

  4. Name 属性设置为数据库名称,并将 ConnectionContext 属性设置为步骤 1 中的 ServerConnection

  5. 通过调用 InstallDistributor 方法安装分布服务器。 传递步骤 3 中的 DistributionDatabase 对象。

  6. 创建 DistributionPublisher 类的实例。

  7. 设置 DistributionPublisher 的以下属性:

  8. 调用 Create 方法。

使用远程分发服务器配置发布和分发

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

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

  3. 创建 DistributionDatabase 类的实例。

  4. Name 属性设置为数据库名称,并将 ConnectionContext 属性设置为步骤 1 中的 ServerConnection

  5. 通过调用 InstallDistributor 方法安装分布服务器。 指定安全密码(在连接到远程分发服务器时由发布服务器使用)和步骤 3 中的 DistributionDatabase 对象。有关详细信息,请参阅 保护分发服务器的安全

    安全说明安全说明

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

  6. 创建 DistributionPublisher 类的实例。

  7. 设置 DistributionPublisher 的以下属性:

  8. 调用 Create 方法。

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

  10. 创建 ReplicationServer 类的实例。 传递步骤 9 中的 ServerConnection

  11. 调用 InstallDistributor 方法。 传递远程分发服务器的名称和在步骤 5 中指定的远程分发服务器的密码。

    安全说明安全说明

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

示例

以下示例将服务器配置为具有本地分发服务器的发布服务器。

         // Set the server and database names
            string distributionDbName = "distribution";
            string publisherName = publisherInstance;
            string publicationDbName = "AdventureWorks";

            DistributionDatabase distributionDb;
            ReplicationServer distributor;
            DistributionPublisher publisher;
            ReplicationDatabase publicationDb;

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

            try
            {
                // Connect to the server acting as the Distributor 
                // and local Publisher.
                conn.Connect();

                // Define the distribution database at the Distributor,
                // but do not create it now.
                distributionDb = new DistributionDatabase(distributionDbName, conn);
                distributionDb.MaxDistributionRetention = 96;
                distributionDb.HistoryRetention = 120;

                // Set the Distributor properties and install the Distributor.
                // This also creates the specified distribution database.
                distributor = new ReplicationServer(conn);
                distributor.InstallDistributor((string)null, distributionDb);

                // Set the Publisher properties and install the Publisher.
                publisher = new DistributionPublisher(publisherName, conn);
                publisher.DistributionDatabase = distributionDb.Name;
                publisher.WorkingDirectory = @"\\" + publisherName + @"\repldata";
                publisher.PublisherSecurity.WindowsAuthentication = true;
                publisher.Create();

                // Enable AdventureWorks as a publication database.
                publicationDb = new ReplicationDatabase(publicationDbName, conn);

                publicationDb.EnabledTransPublishing = true;
                publicationDb.EnabledMergePublishing = true;
            }
            catch (Exception ex)
            {
                // Implement appropriate error handling here.
                throw new ApplicationException("An error occured when installing distribution and publishing.", ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Set the server and database names
Dim distributionDbName As String = "distribution"
Dim publisherName As String = publisherInstance
Dim publicationDbName As String = "AdventureWorks"

Dim distributionDb As DistributionDatabase
Dim distributor As ReplicationServer
Dim publisher As DistributionPublisher
Dim publicationDb As ReplicationDatabase

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

Try
    ' Connect to the server acting as the Distributor 
    ' and local Publisher.
    conn.Connect()

    ' Define the distribution database at the Distributor,
    ' but do not create it now.
    distributionDb = New DistributionDatabase(distributionDbName, conn)
    distributionDb.MaxDistributionRetention = 96
    distributionDb.HistoryRetention = 120

    ' Set the Distributor properties and install the Distributor.
    ' This also creates the specified distribution database.
    distributor = New ReplicationServer(conn)
    distributor.InstallDistributor((CType(Nothing, String)), distributionDb)

    ' Set the Publisher properties and install the Publisher.
    publisher = New DistributionPublisher(publisherName, conn)
    publisher.DistributionDatabase = distributionDb.Name
    publisher.WorkingDirectory = "\\" + publisherName + "\repldata"
    publisher.PublisherSecurity.WindowsAuthentication = True
    publisher.Create()

    ' Enable AdventureWorks as a publication database.
    publicationDb = New ReplicationDatabase(publicationDbName, conn)

    publicationDb.EnabledTransPublishing = True
    publicationDb.EnabledMergePublishing = True

Catch ex As Exception
    ' Implement appropriate error handling here.
    Throw New ApplicationException("An error occured when installing distribution and publishing.", ex)

Finally
    conn.Disconnect()

End Try