如何配置发布和分发(RMO 编程)
可以通过使用复制管理对象 (RMO) 以编程方式配置复制发布和分发。
在单个服务器上配置发布和分发
使用 ServerConnection 类创建与服务器的连接。
创建 ReplicationServer 类的实例。 传递步骤 1 中的 ServerConnection。
创建 DistributionDatabase 类的实例。
将 Name 属性设置为数据库名称,并将 ConnectionContext 属性设置为步骤 1 中的 ServerConnection。
通过调用 InstallDistributor 方法安装分布服务器。 传递步骤 3 中的 DistributionDatabase 对象。
创建 DistributionPublisher 类的实例。
设置 DistributionPublisher 的以下属性:
Name - 发布服务器的名称。
ConnectionContext - 步骤 1 中的 ServerConnection。
DistributionDatabase - 在步骤 5 中创建的数据库的名称。
WorkingDirectory - 用于访问快照文件的共享目录。
PublisherSecurity - 连接到发布服务器时使用的安全模式。建议使用 WindowsAuthentication。
调用 Create 方法。
使用远程分发服务器配置发布和分发
使用 ServerConnection 类创建与远程分发服务器的连接。
创建 ReplicationServer 类的实例。 传递步骤 1 中的 ServerConnection。
创建 DistributionDatabase 类的实例。
将 Name 属性设置为数据库名称,并将 ConnectionContext 属性设置为步骤 1 中的 ServerConnection。
通过调用 InstallDistributor 方法安装分布服务器。 指定安全密码(在连接到远程分发服务器时由发布服务器使用)和步骤 3 中的 DistributionDatabase 对象。有关详细信息,请参阅 保护分发服务器的安全。
安全说明 如果可能,请在运行时提示用户输入安全凭据。 如果必须存储凭据,请使用 Microsoft Windows .NET Framework 提供的 Cryptographic Services(加密服务)。
创建 DistributionPublisher 类的实例。
设置 DistributionPublisher 的以下属性:
Name - 本地发布服务器的名称。
ConnectionContext - 步骤 1 中的 ServerConnection。
DistributionDatabase - 在步骤 5 中创建的数据库的名称。
WorkingDirectory - 用于访问快照文件的共享目录。
PublisherSecurity - 连接到发布服务器时使用的安全模式。建议使用 WindowsAuthentication。
调用 Create 方法。
使用 ServerConnection 类创建与本地发布服务器的连接。
创建 ReplicationServer 类的实例。 传递步骤 9 中的 ServerConnection。
调用 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