Procédure : configurer la publication et la distribution (programmation RMO)
Vous pouvez configurer par programme la publication et la distribution de la réplication à l'aide d'objets RMO (Replication Management Objects).
Pour configurer la publication et la distribution sur un serveur unique
Créez une connexion au serveur en utilisant la classe ServerConnection.
Créez une instance de la classe ReplicationServer. Passez l'objet ServerConnection créé à l'étape 1.
Créez une instance de la classe DistributionDatabase.
Affectez le nom de la base de données à la propriété Name et le ServerConnection créé à l'étape 1 à la propriété ConnectionContext.
Installez le serveur de distribution en appelant la méthode InstallDistributor. Passez l'objet DistributionDatabase créé à l'étape 3.
Créez une instance de la classe DistributionPublisher.
Définissez les propriétés suivantes de DistributionPublisher :
Name - nom du serveur de publication.
ConnectionContext - ServerConnection créé à l'étape 1.
DistributionDatabase - nom de la base de données créée à l'étape 5.
WorkingDirectory- partage utilisé pour accéder aux fichiers de capture instantanée.
PublisherSecurity - mode de sécurité utilisé lors de la connexion au serveur de publication. WindowsAuthentication est recommandé.
Appelez la méthode Create.
Pour configurer la publication et la distribution à l'aide d'un serveur de distribution distant
Créez une connexion au serveur de distribution distant en utilisant la classe ServerConnection.
Créez une instance de la classe ReplicationServer. Passez l'objet ServerConnection créé à l'étape 1.
Créez une instance de la classe DistributionDatabase.
Affectez le nom de la base de données à la propriété Name et le ServerConnection créé à l'étape 1 à la propriété ConnectionContext.
Installez le serveur de distribution en appelant la méthode InstallDistributor. Spécifiez un mot de passe sécurisé (utilisé par le serveur de publication lors de la connexion au serveur de distribution distant) et l'objet DistributionDatabase créé à l'étape 3. Pour plus d'informations, consultez Protection du serveur de distribution.
Remarque relative à la sécurité Si possible, demandez aux utilisateurs de fournir les informations d'identification de sécurité au moment de l'exécution. Si vous devez stocker ces informations, utilisez les services de chiffrement fournis par Microsoft Windows .NET Framework.
Créez une instance de la classe DistributionPublisher.
Définissez les propriétés suivantes de DistributionPublisher :
Name - nom du serveur de publication local.
ConnectionContext - ServerConnection créé à l'étape 1.
DistributionDatabase - nom de la base de données créée à l'étape 5.
WorkingDirectory- partage utilisé pour accéder aux fichiers de capture instantanée.
PublisherSecurity - mode de sécurité utilisé lors de la connexion au serveur de publication. WindowsAuthentication est recommandé.
Appelez la méthode Create.
Créez une connexion au serveur de publication local en utilisant la classe ServerConnection.
Créez une instance de la classe ReplicationServer. Passez l'objet ServerConnection créé à l'étape 9.
Appelez la méthode InstallDistributor. Passez le nom du serveur de distribution distant et son mot de passe spécifié à l'étape 5.
Remarque relative à la sécurité Si possible, demandez aux utilisateurs de fournir les informations d'identification de sécurité au moment de l'exécution. Si vous devez stocker ces informations, utilisez les services de chiffrement fournis par Windows .NET Framework.
Exemple
L'exemple suivant configure un serveur en tant que serveur de publication avec un serveur de distribution 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