MergeSynchronizationAgent Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce la funzionalità dell'Replication agente di merge.
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
- Ereditarietà
-
MergeSynchronizationAgent
- Attributi
- Implementazioni
Esempio
Nel seguente esempio, il Synchronize metodo viene chiamato sull'istanza della MergeSynchronizationAgent classe che viene accessa dalla SynchronizationAgent proprietà per sincronizzare la sottoscrizione push.
// 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
Nel seguente esempio, un'istanza della MergeSynchronizationAgent classe viene utilizzata per sincronizzare un abbonamento di fusione. Poiché l'abbonamento pull è stato creato usando un valore di false per CreateSyncAgentByDefault, devono essere fornite proprietà aggiuntive.
// 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
Commenti
La MergeSynchronizationAgent classe supporta la capacità di eseguire i seguenti compiti di replica:
Sincronizza gli abbonamenti.
Specifica se durante la sincronizzazione vengono eseguite solo la fase di upload, solo quella di download o entrambe le fasi.
Verifica che un abbonamento abbia i dati attesi.
Specifica una cartella snapshot diversa, da cui può essere applicato lo snapshot iniziale per un abbonamento.
Costruttori
| Nome | Descrizione |
|---|---|
| MergeSynchronizationAgent() |
Crea un'istanza della classe MergeSynchronizationAgent. |
Proprietà
| Nome | Descrizione |
|---|---|
| AlternateSynchronizationPartnerCollection |
Ottiene i partner di sincronizzazione alternativi per un abbonamento. |
| AltSnapshotFolder |
Ottiene o imposta la cartella degli snapshot alternativi per l'abbonamento. |
| ComErrorCollection |
Ottiene una raccolta di errori generati dall'agente di replicazione. |
| Distributor |
Ottiene o imposta il nome dell'istanza di Microsoft SQL Server che agisce come distributore per l'abbonamento. |
| DistributorAddress |
Ottiene o imposta l'indirizzo di rete che viene utilizzato per connettersi al Distributore quando la DistributorNetwork proprietà viene specificata. |
| DistributorEncryptedPassword |
Ottiene o imposta la password criptata dal distributore. |
| DistributorLogin |
Ottiene o imposta il nome di accesso utilizzato quando si connette al Distributore tramite l'autenticazione SQL Server. |
| DistributorNetwork |
Ottiene o imposta il client Net-Library utilizzato quando si connette al Distributore. |
| DistributorPassword |
Imposta la password utilizzata durante la connessione al Distributore tramite l'autenticazione SQL Server. |
| DistributorSecurityMode |
Ottiene o imposta la modalità di sicurezza utilizzata quando si connette al Distributore. |
| DownloadGenerationsPerBatch |
Ottiene o imposta il numero di generazioni da elaborare in un singolo batch durante il download delle modifiche dall'Publisher all'Abbonato. Una generazione è definita come un gruppo logico di modifiche per articolo. |
| DynamicSnapshotLocation |
Ottiene o imposta la posizione dello snapshot partizionato per questo abbonato. |
| ExchangeType |
Ottiene o imposta come i dati vengono scambiati durante la sincronizzazione. |
| FileTransferType |
Ottiene o imposta come i file snapshot iniziali vengono trasferiti all'abbonato. |
| HostName |
Ottiene o imposta il valore usato dal agente di merge quando valuta un filtro parametrizzato che utilizza la funzione HOST_NAME. |
| InputMessageFile |
Ottiene o imposta il file del messaggio di input. |
| InternetLogin |
Ottiene o imposta il nome di accesso utilizzato con la sincronizzazione Web quando si connette al Publisher tramite l'autenticazione Internet. |
| InternetPassword |
Imposta la password per la InternetLogin proprietà utilizzata con la sincronizzazione Web quando si connette al Publisher tramite l'autenticazione Internet. |
| InternetProxyLogin |
Ottiene o imposta il nome di accesso utilizzato con la sincronizzazione Web quando si connette al server Web utilizzando un server proxy Internet. |
| InternetProxyPassword |
Imposta la password per l'accesso utilizzato con la sincronizzazione Web quando si connette al server Web tramite un server proxy Internet. |
| InternetProxyServer |
Ottiene o imposta il nome del proxy server Internet utilizzato con la sincronizzazione Web quando si connette al server Web. |
| InternetSecurityMode |
Ottiene o imposta il metodo di autenticazione HTTP utilizzato durante la connessione al server Web durante la sincronizzazione Web. |
| InternetTimeout |
Ottiene o imposta il time-out HTTP quando si connette al server Web. |
| InternetUrl |
Ottiene o imposta l'URL del servizio Web configurato per la sincronizzazione Web. |
| LastUpdatedTime |
Riceve il timestamp dell'ultima volta che quell'agente di replicazione ha sincronizzato l'abbonamento. |
| LoginTimeout |
Ottiene o imposta il numero massimo di secondi per aspettare che vengano stabilite le connessioni. |
| MetadataRetentionCleanup |
Ottieni o decide se ripulire i metadati. |
| Output |
Ottiene o imposta il file di output agente. |
| OutputMessageFile |
Ottiene o imposta il file del messaggio di input. |
| OutputVerboseLevel |
Ottiene o imposta il livello di dettaglio delle informazioni scritte nel file di output dell'agente. |
| ProfileName |
Ottiene o imposta il nome del profilo utilizzato dall'agente. |
| Publication |
Ottiene o imposta il nome della pubblicazione. |
| Publisher |
Ottiene o imposta il nome dell'istanza di Microsoft SQL Server che è il Publisher per l'abbonamento. |
| PublisherAddress |
Ottiene o imposta l'indirizzo di rete che viene utilizzato per connettersi al Publisher quando la PublisherNetwork proprietà viene specificata. |
| PublisherChanges |
Ottiene il numero totale di modifiche di Publisher applicate all'Abbonato durante l'ultima sincronizzazione. |
| PublisherConflicts |
Ottiene il numero totale di conflitti avvenuti presso l'Publisher durante l'ultima sincronizzazione. |
| PublisherDatabase |
Ottiene o imposta il nome del database della pubblicazione. |
| PublisherEncryptedPassword |
Ottiene o imposta la password criptata dall'editore. |
| PublisherFailoverPartner |
Ottiene o imposta l'istanza partner di failover di SQL Server che partecipa a una sessione di mirroring del database con il database di pubblicazione. |
| PublisherLogin |
Ottiene o imposta il nome di accesso utilizzato quando si connette al Publisher usando l'autenticazione SQL Server. |
| PublisherNetwork |
Ottiene o imposta il client Net-Library utilizzato quando si connette al Publisher. |
| PublisherPassword |
Imposta la password utilizzata quando si connette al Publisher usando l'autenticazione SQL Server. |
| PublisherSecurityMode |
Ottiene o imposta la modalità di sicurezza usata quando si connette al Publisher. |
| QueryTimeout |
Ottiene o imposta il numero di secondi consentiti affinché le query interne si completino. |
| SecureDistributorEncryptedPassword |
Ottiene o imposta la password criptata con distributore sicuro. |
| SecurePublisherEncryptedPassword |
Ottiene o imposta la password criptata dall'editore sicuro. |
| SecureSubscriberEncryptedPassword |
Ottiene o imposta la password criptata per l'abbonato sicuro. |
| Subscriber |
Ottiene o imposta il nome dell'istanza di Microsoft SQL Server che è l'Abbonato. |
| SubscriberChanges |
Ottiene il numero totale di modifiche all'abbonato applicate presso l'Publisher durante l'ultima sincronizzazione. |
| SubscriberConflicts |
Ottiene il numero totale di conflitti avvenuti presso l'Publisher durante l'ultima sincronizzazione. |
| SubscriberDatabase |
Ottiene o imposta il nome del database in abbonamento. |
| SubscriberDatabasePath |
Ottiene o imposta il percorso del database degli abbonati. |
| SubscriberDataSourceType |
Ottiene o imposta il tipo di sorgente dati utilizzata come abbonato. |
| SubscriberEncryptedPassword |
Ottiene o imposta la password criptata dell'abbonato. |
| SubscriberLogin |
Ottiene o imposta il nome di accesso utilizzato quando si connette all'Abbonato tramite l'autenticazione SQL Server. |
| SubscriberPassword |
Imposta la password utilizzata durante la connessione all'Abbonato tramite l'autenticazione SQL Server. |
| SubscriberSecurityMode |
Ottiene o imposta la modalità di sicurezza utilizzata quando si connette all'abbonato. |
| SubscriptionType |
Prende o determina se l'abbonamento è un abbonamento push o pull. |
| SyncToAlternate |
Ottiene o stabilisce se la sincronizzazione avviene con un partner di sincronizzazione alternativo. |
| UploadGenerationsPerBatch |
Ottiene o imposta il numero di generazioni da elaborare in un singolo batch mentre carica le modifiche dall'Abbonato all'Publisher. Una generazione è definita come un gruppo logico di modifiche per articolo. |
| UseInteractiveResolver |
Ottiene o stabilisce se il risolver interattivo viene utilizzato durante la riconciliazione. |
| UseWebSynchronization |
Ottiene o imposta se viene utilizzata la sincronizzazione Web. |
| Validate |
Ottiene o stabilisce se la validazione dei dati viene effettuata sui dati dell'abbonato alla fine della sincronizzazione. |
| WorkingDirectory |
Ottiene o imposta la directory funzionante da cui vengono accediuti i file snapshot quando si utilizza FTP. |
Metodi
| Nome | Descrizione |
|---|---|
| Abort() |
Annulla la sincronizzazione. |
| ClearAllTraceFlags() |
Cancella tutti i flag di traccia usati dall'agente di sincronizzazione. |
| ClearTraceFlag(Int32) |
Elimina una bandiera di traccia. |
| Dispose() |
Rilascia le risorse non gestite che vengono utilizzate da MergeSynchronizationAgent. |
| Dispose(Boolean) |
Rilascia le risorse non gestite usate dalla MergeSynchronizationAgent classe e opzionalmente rilascia le risorse gestite. |
| EnableTraceFlag(Int32) |
Abilita il tracciamento delle bandiere. |
| Finalize() |
Finalizza l'agente. |
| IsSnapshotRequired() |
Si collega all'Publisher o al Distributore e all'Abbonato per determinare se un nuovo snapshot verrà applicato durante la prossima sincronizzazione dell'agente. |
| ProcessMessagesAtPublisher() |
Elabora i messaggi presso l'editore. |
| ProcessMessagesAtSubscriber() |
Elabora i messaggi all'abbonato. |
| Synchronize() |
Avvia il agente di merge per sincronizzare l'abbonamento. |
Eventi
| Nome | Descrizione |
|---|---|
| ComStatus |
Verifica quando il agente di merge restituisce le informazioni di stato di sincronizzazione Com. |
| Status |
Accade quando l'agente di merge restituisce informazioni sullo stato della sincronizzazione. |
Si applica a
Thread safety
Qualsiasi membro pubblico statico (Condiviso in Visual Basic) di questo tipo è sicuro per thread. Non è garantito che tutti i membri dell'istanza siano thread-safe.