MergeSynchronizationAgent Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Bietet die Funktionalität des Replication Merge-Agent.
public ref class MergeSynchronizationAgent : MarshalByRefObject, IDisposable, Microsoft::SqlServer::Replication::IMergeSynchronizationAgent
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDispatch)]
[System.Runtime.InteropServices.ComSourceInterfaces(typeof(Microsoft.SqlServer.Replication.IComStatusEvent))]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Runtime.InteropServices.Guid("ee5ee47e-6d29-448f-b2d2-f8e632db336a")]
public class MergeSynchronizationAgent : MarshalByRefObject, IDisposable, Microsoft.SqlServer.Replication.IMergeSynchronizationAgent
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDispatch)>]
[<System.Runtime.InteropServices.ComSourceInterfaces(typeof(Microsoft.SqlServer.Replication.IComStatusEvent))>]
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Runtime.InteropServices.Guid("ee5ee47e-6d29-448f-b2d2-f8e632db336a")>]
type MergeSynchronizationAgent = class
inherit MarshalByRefObject
interface IDisposable
interface IMergeSynchronizationAgent
Public Class MergeSynchronizationAgent
Inherits MarshalByRefObject
Implements IDisposable, IMergeSynchronizationAgent
- Vererbung
-
MergeSynchronizationAgent
- Attribute
- Implementiert
Beispiele
Im folgenden Beispiel wird die Methode Synchronize auf die Instanz der Klasse MergeSynchronizationAgent aufgerufen, die von der SynchronizationAgent Eigenschaft zur Synchronisation des Push-Subscriptions abgerufen wird.
// Define the server, publication, and database names.
string subscriberName = subscriberInstance;
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
MergeSubscription subscription;
try
{
// Connect to the Publisher
conn.Connect();
// Define the subscription.
subscription = new MergeSubscription();
subscription.ConnectionContext = conn;
subscription.DatabaseName = publicationDbName;
subscription.PublicationName = publicationName;
subscription.SubscriptionDBName = subscriptionDbName;
subscription.SubscriberName = subscriberName;
// If the push subscription exists, start the synchronization.
if (subscription.LoadProperties())
{
// Check that we have enough metadata to start the agent.
if (subscription.SubscriberSecurity != null)
{
// Synchronously start the Merge Agent for the subscription.
subscription.SynchronizationAgent.Synchronize();
}
else
{
throw new ApplicationException("There is insufficent metadata to " +
"synchronize the subscription. Recreate the subscription with " +
"the agent job or supply the required agent properties at run time.");
}
}
else
{
// Do something here if the push subscription does not exist.
throw new ApplicationException(String.Format(
"The subscription to '{0}' does not exist on {1}",
publicationName, subscriberName));
}
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("The subscription could not be synchronized.", ex);
}
finally
{
conn.Disconnect();
}
' Define the server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"
' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Dim subscription As MergeSubscription
Try
' Connect to the Publisher
conn.Connect()
' Define the subscription.
subscription = New MergeSubscription()
subscription.ConnectionContext = conn
subscription.DatabaseName = publicationDbName
subscription.PublicationName = publicationName
subscription.SubscriptionDBName = subscriptionDbName
subscription.SubscriberName = subscriberName
' If the push subscription exists, start the synchronization.
If subscription.LoadProperties() Then
' Check that we have enough metadata to start the agent.
If Not subscription.SubscriberSecurity Is Nothing Then
' Synchronously start the Merge Agent for the subscription.
' Log agent messages to an output file.
subscription.SynchronizationAgent.Output = "mergeagent.log"
subscription.SynchronizationAgent.OutputVerboseLevel = 2
subscription.SynchronizationAgent.Synchronize()
Else
Throw New ApplicationException("There is insufficent metadata to " + _
"synchronize the subscription. Recreate the subscription with " + _
"the agent job or supply the required agent properties at run time.")
End If
Else
' Do something here if the push subscription does not exist.
Throw New ApplicationException(String.Format( _
"The subscription to '{0}' does not exist on {1}", _
publicationName, subscriberName))
End If
Catch ex As Exception
' Implement appropriate error handling here.
Throw New ApplicationException("The subscription could not be synchronized.", ex)
Finally
conn.Disconnect()
End Try
Im folgenden Beispiel wird eine Instanz der MergeSynchronizationAgent Klasse verwendet, um ein Merge-Abonnement zu synchronisieren. Da das Pull-Abonnement mit einem Wert von false für CreateSyncAgentByDefaulterstellt wurde, müssen zusätzliche Eigenschaften bereitgestellt werden.
// Define the server, publication, and database names.
string subscriberName = subscriberInstance;
string publisherName = publisherInstance;
string distributorName = distributorInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";
string hostname = @"adventure-works\garrett1";
string webSyncUrl = "https://" + publisherInstance + "/SalesOrders/replisapi.dll";
// Create a connection to the Subscriber.
ServerConnection conn = new ServerConnection(subscriberName);
MergePullSubscription subscription;
MergeSynchronizationAgent agent;
try
{
// Connect to the Subscriber.
conn.Connect();
// Define the pull subscription.
subscription = new MergePullSubscription();
subscription.ConnectionContext = conn;
subscription.DatabaseName = subscriptionDbName;
subscription.PublisherName = publisherName;
subscription.PublicationDBName = publicationDbName;
subscription.PublicationName = publicationName;
// If the pull subscription exists, then start the synchronization.
if (subscription.LoadProperties())
{
// Get the agent for the subscription.
agent = subscription.SynchronizationAgent;
// Check that we have enough metadata to start the agent.
if (agent.PublisherSecurityMode == null)
{
// Set the required properties that could not be returned
// from the MSsubscription_properties table.
agent.PublisherSecurityMode = SecurityMode.Integrated;
agent.DistributorSecurityMode = SecurityMode.Integrated;
agent.Distributor = publisherName;
agent.HostName = hostname;
// Set optional Web synchronization properties.
agent.UseWebSynchronization = true;
agent.InternetUrl = webSyncUrl;
agent.InternetSecurityMode = SecurityMode.Standard;
agent.InternetLogin = winLogin;
agent.InternetPassword = winPassword;
}
// Enable agent output to the console.
agent.OutputVerboseLevel = 1;
agent.Output = "";
// Synchronously start the Merge Agent for the subscription.
agent.Synchronize();
}
else
{
// Do something here if the pull subscription does not exist.
throw new ApplicationException(String.Format(
"A subscription to '{0}' does not exist on {1}",
publicationName, subscriberName));
}
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("The subscription could not be " +
"synchronized. Verify that the subscription has " +
"been defined correctly.", ex);
}
finally
{
conn.Disconnect();
}
' Define the server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"
Dim hostname As String = "adventure-works\garrett1"
Dim webSyncUrl As String = "https://" + publisherInstance + "/SalesOrders/replisapi.dll"
' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
Dim subscription As MergePullSubscription
Dim agent As MergeSynchronizationAgent
Try
' Connect to the Subscriber.
conn.Connect()
' Define the pull subscription.
subscription = New MergePullSubscription()
subscription.ConnectionContext = conn
subscription.DatabaseName = subscriptionDbName
subscription.PublisherName = publisherName
subscription.PublicationDBName = publicationDbName
subscription.PublicationName = publicationName
' If the pull subscription exists, then start the synchronization.
If subscription.LoadProperties() Then
' Get the agent for the subscription.
agent = subscription.SynchronizationAgent
' Check that we have enough metadata to start the agent.
If agent.PublisherSecurityMode = Nothing Then
' Set the required properties that could not be returned
' from the MSsubscription_properties table.
agent.PublisherSecurityMode = SecurityMode.Integrated
agent.Distributor = publisherInstance
agent.DistributorSecurityMode = SecurityMode.Integrated
agent.HostName = hostname
' Set optional Web synchronization properties.
agent.UseWebSynchronization = True
agent.InternetUrl = webSyncUrl
agent.InternetSecurityMode = SecurityMode.Standard
agent.InternetLogin = winLogin
agent.InternetPassword = winPassword
End If
' Enable agent logging to the console.
agent.OutputVerboseLevel = 1
agent.Output = ""
' Synchronously start the Merge Agent for the subscription.
agent.Synchronize()
Else
' Do something here if the pull subscription does not exist.
Throw New ApplicationException(String.Format( _
"A subscription to '{0}' does not exist on {1}", _
publicationName, subscriberName))
End If
Catch ex As Exception
' Implement appropriate error handling here.
Throw New ApplicationException("The subscription could not be " + _
"synchronized. Verify that the subscription has " + _
"been defined correctly.", ex)
Finally
conn.Disconnect()
End Try
Hinweise
Die Klasse MergeSynchronizationAgent unterstützt die Fähigkeit, folgende Replikationsaufgaben auszuführen:
Synchronisieren Sie Abonnements.
Gib an, ob während der Synchronisation nur die Upload-Phase, nur die Download-Phase oder beide Phasen ausgeführt werden.
Überprüfen Sie, dass ein Abonnement die erwarteten Daten enthält.
Geben Sie einen anderen Snapshot-Ordner an, aus dem der erste Snapshot für ein Abonnement angewendet werden kann.
Konstruktoren
| Name | Beschreibung |
|---|---|
| MergeSynchronizationAgent() |
Erstellt eine Instanz der MergeSynchronizationAgent-Klasse. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| AlternateSynchronizationPartnerCollection |
Bekommt die alternativen Synchronisationspartner für ein Abonnement. |
| AltSnapshotFolder |
Erhält oder setzt den alternativen Snapshot-Ordner für das Abonnement. |
| ComErrorCollection |
Erhält eine Sammlung von Fehlern, die vom Replikationsagenten generiert werden. |
| Distributor |
Erhält oder setzt den Namen der Instanz von Microsoft SQL Server, die als Distributor für das Abonnement fungiert. |
| DistributorAddress |
Erhält oder setzt die Netzwerkadresse, die zur Verbindung zum Distributor verwendet wird, wenn die DistributorNetwork Eigenschaft angegeben wird. |
| DistributorEncryptedPassword |
Erhält oder setzt das verschlüsselte Passwort des Distributors. |
| DistributorLogin |
Erhält oder setzt den Login-Namen, der beim Verbinden mit dem Distributor über SQL Server Authentication verwendet wird. |
| DistributorNetwork |
Erhält oder setzt das Client-Net-Library, das beim Verbinden mit dem Distributor verwendet wird. |
| DistributorPassword |
Legt das Passwort fest, das bei der Verbindung mit dem Distributor mittels SQL Server-Authentifizierung verwendet wird. |
| DistributorSecurityMode |
Erhält oder setzt den Sicherheitsmodus, der beim Verbinden mit dem Verteiler verwendet wird. |
| DownloadGenerationsPerBatch |
Erhält oder setzt die Anzahl der Generationen, die in einer einzigen Charge verarbeitet werden sollen, während Änderungen vom Publisher auf den Abonnenten heruntergeladen werden. Eine Generierung ist als logische Gruppe von Änderungen pro Artikel definiert. |
| DynamicSnapshotLocation |
Erhält oder legt den Standort des partitionierten Snapshots für diesen Abonnenten fest. |
| ExchangeType |
Erhält oder legt fest, wie Daten während der Synchronisation ausgetauscht werden. |
| FileTransferType |
Erhält oder bestimmt, wie die ursprünglichen Snapshot-Dateien an den Abonnenten übertragen werden. |
| HostName |
Erhält oder setzt den vom Merge-Agent verwendeten Wert, wenn er einen parametrisierten Filter auswertet, der die Funktion HOST_NAME verwendet. |
| InputMessageFile |
Erhält oder setzt die Eingabe-Nachrichtendatei. |
| InternetLogin |
Erhält oder setzt den Login-Namen, der bei der Websynchronisation verwendet wird, wenn man sich mit dem Publisher verbindet, mittels Internet-Authentifizierung. |
| InternetPassword |
Legt das Passwort für die InternetLogin Eigenschaft fest, die bei der Websynchronisierung verwendet wird, wenn man sich mit dem Publisher verbindet, indem Internet-Authentifizierung verwendet wird. |
| InternetProxyLogin |
Erhält oder setzt den Login-Namen, der bei der Websynchronisation verwendet wird, wenn man sich mit dem Webserver verbindet, über einen Internet-Proxy-Server. |
| InternetProxyPassword |
Legt das Passwort für den Login fest, das bei der Websynchronisation verwendet wird, wenn man sich mit dem Webserver über einen Internet-Proxy-Server verbindet. |
| InternetProxyServer |
Erhält oder setzt den Namen des Internet-Proxy-Servers, der bei der Verbindung mit dem Webserver verwendet wird. |
| InternetSecurityMode |
Erhält oder setzt die HTTP-Authentifizierungsmethode, die beim Verbinden mit dem Webserver während der Websynchronisation verwendet wird. |
| InternetTimeout |
Erhält oder setzt das HTTP-Timeout beim Verbinden mit dem Webserver. |
| InternetUrl |
Erhält oder setzt die URL des Webdienstes, der für die Websynchronisation konfiguriert ist. |
| LastUpdatedTime |
Erhält den Zeitstempel des letzten Mals, als der Replikationsagent das Abonnement synchronisiert hat. |
| LoginTimeout |
Erhält oder setzt die maximale Sekundenanzahl für die Wartezeit, bis Verbindungen hergestellt werden. |
| MetadataRetentionCleanup |
Hole oder set, ob Metadaten bereinigt werden sollen. |
| Output |
Erhält oder setzt die Ausgabedatei des Agenten. |
| OutputMessageFile |
Erhält oder setzt die Eingabe-Nachrichtendatei. |
| OutputVerboseLevel |
Erhält oder setzt das Detailniveau der Informationen, die in die Agentenausgabedatei geschrieben werden. |
| ProfileName |
Erhält oder setzt den Namen des Profils, das vom Agenten verwendet wird. |
| Publication |
Bekommt oder setzt den Namen der Publikation. |
| Publisher |
Erhält oder setzt den Namen der Microsoft SQL Server-Instanz, die der Publisher für das Abonnement ist. |
| PublisherAddress |
Erhält oder setzt die Netzwerkadresse, die zur Verbindung zum Publisher verwendet wird, wenn die PublisherNetwork Eigenschaft angegeben wird. |
| PublisherChanges |
Erhält die Gesamtzahl der Publisher-Änderungen, die beim Abonnenten während der letzten Synchronisation angewendet wurden. |
| PublisherConflicts |
Erhält die Gesamtzahl der Konflikte, die beim Publisher während der letzten Synchronisation aufgetreten sind. |
| PublisherDatabase |
Erhält oder setzt den Namen der Publikationsdatenbank. |
| PublisherEncryptedPassword |
Bekommt oder setzt das verschlüsselte Passwort des Verlags. |
| PublisherFailoverPartner |
Erhält oder setzt die Failover-Partnerinstanz von SQL Server, die an einer Datenbankspiegelungssitzung mit der Publikationsdatenbank teilnimmt. |
| PublisherLogin |
Erhält oder setzt den Login-Namen, der beim Verbinden mit dem Publisher verwendet wird, mithilfe der SQL Server-Authentifizierung. |
| PublisherNetwork |
Erhält oder setzt den Client Net-Library, der beim Verbinden mit dem Publisher verwendet wird. |
| PublisherPassword |
Legt das Passwort fest, das beim Verbinden mit dem Publisher verwendet wird, mittels SQL Server Authentication. |
| PublisherSecurityMode |
Erhält oder setzt den Sicherheitsmodus, der beim Verbinden mit dem Publisher verwendet wird. |
| QueryTimeout |
Erhält oder legt die Anzahl der Sekunden fest, die für interne Abfragen erlaubt sind. |
| SecureDistributorEncryptedPassword |
Erhält oder setzt das sichere Verteiler-verschlüsselte Passwort. |
| SecurePublisherEncryptedPassword |
Erhält oder setzt das sichere, verschlüsselte Verlagspasswort. |
| SecureSubscriberEncryptedPassword |
Erhält oder setzt das sichere, verschlüsselte Passwort für den Abonnenten. |
| Subscriber |
Erhält oder setzt den Namen der Instanz des Microsoft SQL Server, die der Abonnent ist. |
| SubscriberChanges |
Erhält die Gesamtzahl der Abonnentenänderungen, die beim Publisher während der letzten Synchronisation angewendet wurden. |
| SubscriberConflicts |
Erhält die Gesamtzahl der Konflikte, die beim Publisher während der letzten Synchronisation aufgetreten sind. |
| SubscriberDatabase |
Erhält oder setzt den Namen der Abonnementdatenbank. |
| SubscriberDatabasePath |
Erhält oder setzt den Pfad der Abonnentendatenbank. |
| SubscriberDataSourceType |
Erhält oder legt die Art der Datenquelle fest, die als Abonnent verwendet wird. |
| SubscriberEncryptedPassword |
Erhält oder setzt das verschlüsselte Passwort des Abonnenten. |
| SubscriberLogin |
Erhält oder setzt den Login-Namen, der bei der Verbindung zum Abonnenten durch SQL Server-Authentifizierung verwendet wird. |
| SubscriberPassword |
Legt das Passwort fest, das bei der Verbindung mit dem Abonnenten durch SQL Server-Authentifizierung verwendet wird. |
| SubscriberSecurityMode |
Erhält oder stellt den Sicherheitsmodus ein, der beim Verbinden mit dem Abonnenten verwendet wird. |
| SubscriptionType |
Es gibt oder bestimmt, ob das Abonnement ein Push- oder Pull-Abonnement ist. |
| SyncToAlternate |
Erhält oder setzt fest, ob die Synchronisation an einen alternativen Synchronisationspartner erfolgt. |
| UploadGenerationsPerBatch |
Erhält oder setzt die Anzahl der Generationen, die in einer einzigen Charge verarbeitet werden sollen, während Änderungen vom Abonnenten auf den Publisher hochgeladen werden. Eine Generierung ist als logische Gruppe von Änderungen pro Artikel definiert. |
| UseInteractiveResolver |
Erhält oder setzt, ob der interaktive Resolver während der Abstimmung verwendet wird. |
| UseWebSynchronization |
Erhält oder setzt, ob Web-Synchronisation verwendet wird. |
| Validate |
Erhält oder legt fest, ob am Ende der Synchronisation die Datenvalidierung an den Abonnentendaten durchgeführt wird. |
| WorkingDirectory |
Erhält oder setzt das Arbeitsverzeichnis, aus dem Snapshot-Dateien beim FTP-Einsatz abgerufen werden. |
Methoden
| Name | Beschreibung |
|---|---|
| Abort() |
Es bricht die Synchronisation ab. |
| ClearAllTraceFlags() |
Löscht alle vom Synchronisationsagenten verwendeten Trace-Flags. |
| ClearTraceFlag(Int32) |
Entfernt eine Spurflagge. |
| Dispose() |
Freisetzt die unverwalteten Ressourcen, die von MergeSynchronizationAgentverwendet werden. |
| Dispose(Boolean) |
Gibt die nicht verwalteten Ressourcen frei, die von MergeSynchronizationAgent der Klasse verwendet werden, und gibt optional die verwalteten Ressourcen frei. |
| EnableTraceFlag(Int32) |
Ermöglicht das Flaggenverfolgung. |
| Finalize() |
Finalisiert den Agenten. |
| IsSnapshotRequired() |
Verbindet sich mit dem Publisher oder Distributor und dem Abonnenten, um zu bestimmen, ob bei der nächsten Agentensynchronisation ein neuer Snapshot angewendet wird. |
| ProcessMessagesAtPublisher() |
Verarbeitet die Nachrichten beim Verlag. |
| ProcessMessagesAtSubscriber() |
Verarbeitet die Nachrichten beim Abonnenten. |
| Synchronize() |
Startet den Merge-Agent, um das Abonnement zu synchronisieren. |
Ereignisse
| Name | Beschreibung |
|---|---|
| ComStatus |
Tritt auf, wenn der Merge-Agent Synchronization Com-Statusinformationen zurückgibt. |
| Status |
Tritt auf, wenn der Merge-Agent Synchronisationsstatusinformationen zurückgibt. |
Gilt für:
Threadsicherheit
Alle öffentlichen statischen (in Visual Basic geteilten) Mitglieder dieses Typs sind threadsicher. Instanzenmitglieder sind nicht garantiert threadsicher.