Como configurar a publicação e a distribuição (Programação RMO)
Você pode configurar a replicação da publicação e da distribuição de forma programada usando o RMO (Replication Management Objects).
Para configurar a publicação e a distribuição em um único servidor
Crie uma conexão ao servidor usando a classe ServerConnection.
Crie uma instância da classe ReplicationServer. Passe o ServerConnection da etapa 1.
Crie uma instância da classe DistributionDatabase.
Defina a propriedade Name para o nome do banco de dados e defina a propriedade ConnectionContext para o ServerConnection da etapa 1.
Instale o Distribuidor chamando o método InstallDistributor. Passe o objeto DistributionDatabase da etapa 3.
Crie uma instância da classe DistributionPublisher.
Defina as seguintes propriedades do DistributionPublisher:
Name - nome do Publicador.
ConnectionContext - a ServerConnection da etapa 1.
DistributionDatabase - o nome do banco de dados criado na etapa 5.
WorkingDirectory - o compartilhamento usado para acessar os arquivos de instantâneos.
PublisherSecurity - o modo de segurança usado ao conectar-se ao Publicador. WindowsAuthentication é recomendado.
Chame o método Create.
Para configurar a publicação e a distribuição usando um Distribuidor remoto
Crie uma conexão ao servidor do Distribuidor remoto usando a classe ServerConnection.
Crie uma instância da classe ReplicationServer. Passe o ServerConnection da etapa 1.
Crie uma instância da classe DistributionDatabase.
Defina a propriedade Name ao nome do banco de dados e defina a propriedade ConnectionContext ao ServerConnection da etapa 1.
Instale o Distribuidor chamando o método InstallDistributor. Especifique uma senha segura (usada pelo Publicador ao se conectar ao Distribuidor remoto) e o objeto DistributionDatabase da etapa 3. Para obter mais informações, consulte Protegendo o Distribuidor.
Observação sobre segurança Quando possível, solicite aos usuários que insiram as credenciais de segurança em tempo de execução. Se for preciso armazenar credenciais, use os serviços criptográficos fornecidos pelo Microsoft Windows .NET Framework.
Crie uma instância da classe DistributionPublisher.
Defina as seguintes propriedades de DistributionPublisher:
Name - o nome do servidor do Publicador local.
ConnectionContext - o ServerConnection da etapa 1.
DistributionDatabase - o nome do banco de dados criado na etapa 5.
WorkingDirectory - o compartilhamento usado para acessar os arquivos de instantâneos.
PublisherSecurity - o modo de segurança usado ao se conectar ao Publicador. WindowsAuthentication é recomendado.
Chame o método Create.
Crie uma conexão com o servidor do Publicador local usando a classe ServerConnection.
Crie uma instância da classe ReplicationServer. Passe o ServerConnection da etapa 9.
Chame o método InstallDistributor. Passe o nome do Distribuidor remoto e a senha para o Distribuidor remoto especificados na etapa 5.
Observação sobre segurança Quando possível, solicite aos usuários que insiram as credenciais de segurança em tempo de execução. Se for preciso armazenar credenciais, use os serviços criptográficos fornecidos pelo Windows .NET Framework.
Exemplo
O exemplo a seguir configura um servidor como um Publicador com um Distribuidor local.
// Set the server and database names
string distributionDbName = "distribution";
string publisherName = publisherInstance;
string publicationDbName = "AdventureWorks2008R2";
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 = "AdventureWorks2008R2"
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