MergeArticle 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.
Rappresenta un articolo in una pubblicazione di tipo merge.
public ref class MergeArticle sealed : Microsoft::SqlServer::Replication::Article
public sealed class MergeArticle : Microsoft.SqlServer.Replication.Article
type MergeArticle = class
inherit Article
Public NotInheritable Class MergeArticle
Inherits Article
- Ereditarietà
Esempio
In questo esempio vengono creati tre articoli di merge e i relativi filtri join.
// Define the Publisher and publication names.
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2012";
// Specify article names.
string articleName1 = "Employee";
string articleName2 = "SalesOrderHeader";
string articleName3 = "SalesOrderDetail";
// Specify join filter information.
string filterName12 = "SalesOrderHeader_Employee";
string filterClause12 = "Employee.EmployeeID = " +
"SalesOrderHeader.SalesPersonID";
string filterName23 = "SalesOrderDetail_SalesOrderHeader";
string filterClause23 = "SalesOrderHeader.SalesOrderID = " +
"SalesOrderDetail.SalesOrderID";
string salesSchema = "Sales";
string hrSchema = "HumanResources";
MergeArticle article1 = new MergeArticle();
MergeArticle article2 = new MergeArticle();
MergeArticle article3 = new MergeArticle();
MergeJoinFilter filter12 = new MergeJoinFilter();
MergeJoinFilter filter23 = new MergeJoinFilter();
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
// Create three merge articles that are horizontally partitioned
// using a parameterized row filter on Employee.EmployeeID, which is
// extended to the two other articles using join filters.
try
{
// Connect to the Publisher.
conn.Connect();
// Create each article.
// For clarity, each article is defined separately.
// In practice, iterative structures and arrays should
// be used to efficiently create multiple articles.
// Set the required properties for the Employee article.
article1.ConnectionContext = conn;
article1.Name = articleName1;
article1.DatabaseName = publicationDbName;
article1.SourceObjectName = articleName1;
article1.SourceObjectOwner = hrSchema;
article1.PublicationName = publicationName;
article1.Type = ArticleOptions.TableBased;
// Define the parameterized filter clause based on Hostname.
article1.FilterClause = "Employee.LoginID = HOST_NAME()";
// Set the required properties for the SalesOrderHeader article.
article2.ConnectionContext = conn;
article2.Name = articleName2;
article2.DatabaseName = publicationDbName;
article2.SourceObjectName = articleName2;
article2.SourceObjectOwner = salesSchema;
article2.PublicationName = publicationName;
article2.Type = ArticleOptions.TableBased;
// Set the required properties for the SalesOrderDetail article.
article3.ConnectionContext = conn;
article3.Name = articleName3;
article3.DatabaseName = publicationDbName;
article3.SourceObjectName = articleName3;
article3.SourceObjectOwner = salesSchema;
article3.PublicationName = publicationName;
article3.Type = ArticleOptions.TableBased;
if (!article1.IsExistingObject) article1.Create();
if (!article2.IsExistingObject) article2.Create();
if (!article3.IsExistingObject) article3.Create();
// Select published columns for SalesOrderHeader.
// Create an array of column names to vertically filter out.
// In this example, only one column is removed.
String[] columns = new String[1];
columns[0] = "CreditCardApprovalCode";
// Remove the column.
article2.RemoveReplicatedColumns(columns);
// Define a merge filter clauses that filter
// SalesOrderHeader based on Employee and
// SalesOrderDetail based on SalesOrderHeader.
// Parent article.
filter12.JoinArticleName = articleName1;
// Child article.
filter12.ArticleName = articleName2;
filter12.FilterName = filterName12;
filter12.JoinUniqueKey = true;
filter12.FilterTypes = FilterTypes.JoinFilter;
filter12.JoinFilterClause = filterClause12;
// Add the join filter to the child article.
article2.AddMergeJoinFilter(filter12);
// Parent article.
filter23.JoinArticleName = articleName2;
// Child article.
filter23.ArticleName = articleName3;
filter23.FilterName = filterName23;
filter23.JoinUniqueKey = true;
filter23.FilterTypes = FilterTypes.JoinFilter;
filter23.JoinFilterClause = filterClause23;
// Add the join filter to the child article.
article3.AddMergeJoinFilter(filter23);
}
catch (Exception ex)
{
// Do error handling here and rollback the transaction.
throw new ApplicationException(
"The filtered articles could not be created", ex);
}
finally
{
conn.Disconnect();
}
' Define the Publisher and publication names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"
' Specify article names.
Dim articleName1 As String = "Employee"
Dim articleName2 As String = "SalesOrderHeader"
Dim articleName3 As String = "SalesOrderDetail"
' Specify join filter information.
Dim filterName12 As String = "SalesOrderHeader_Employee"
Dim filterClause12 As String = "Employee.EmployeeID = " + _
"SalesOrderHeader.SalesPersonID"
Dim filterName23 As String = "SalesOrderDetail_SalesOrderHeader"
Dim filterClause23 As String = "SalesOrderHeader.SalesOrderID = " + _
"SalesOrderDetail.SalesOrderID"
Dim salesSchema As String = "Sales"
Dim hrSchema As String = "HumanResources"
Dim article1 As MergeArticle = New MergeArticle()
Dim article2 As MergeArticle = New MergeArticle()
Dim article3 As MergeArticle = New MergeArticle()
Dim filter12 As MergeJoinFilter = New MergeJoinFilter()
Dim filter23 As MergeJoinFilter = New MergeJoinFilter()
' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
' Create three merge articles that are horizontally partitioned
' using a parameterized row filter on Employee.EmployeeID, which is
' extended to the two other articles using join filters.
Try
' Connect to the Publisher.
conn.Connect()
' Create each article.
' For clarity, each article is defined separately.
' In practice, iterative structures and arrays should
' be used to efficiently create multiple articles.
' Set the required properties for the Employee article.
article1.ConnectionContext = conn
article1.Name = articleName1
article1.DatabaseName = publicationDbName
article1.SourceObjectName = articleName1
article1.SourceObjectOwner = hrSchema
article1.PublicationName = publicationName
article1.Type = ArticleOptions.TableBased
' Define the parameterized filter clause based on Hostname.
article1.FilterClause = "Employee.LoginID = HOST_NAME()"
' Set the required properties for the SalesOrderHeader article.
article2.ConnectionContext = conn
article2.Name = articleName2
article2.DatabaseName = publicationDbName
article2.SourceObjectName = articleName2
article2.SourceObjectOwner = salesSchema
article2.PublicationName = publicationName
article2.Type = ArticleOptions.TableBased
' Set the required properties for the SalesOrderDetail article.
article3.ConnectionContext = conn
article3.Name = articleName3
article3.DatabaseName = publicationDbName
article3.SourceObjectName = articleName3
article3.SourceObjectOwner = salesSchema
article3.PublicationName = publicationName
article3.Type = ArticleOptions.TableBased
' Create the articles, if they do not already exist.
If article1.IsExistingObject = False Then
article1.Create()
End If
If article2.IsExistingObject = False Then
article2.Create()
End If
If article3.IsExistingObject = False Then
article3.Create()
End If
' Select published columns for SalesOrderHeader.
' Create an array of column names to vertically filter out.
' In this example, only one column is removed.
Dim columns() As String = New String(0) {}
columns(0) = "CreditCardApprovalCode"
' Remove the column.
article2.RemoveReplicatedColumns(columns)
' Define a merge filter clauses that filter
' SalesOrderHeader based on Employee and
' SalesOrderDetail based on SalesOrderHeader.
' Parent article.
filter12.JoinArticleName = articleName1
' Child article.
filter12.ArticleName = articleName2
filter12.FilterName = filterName12
filter12.JoinUniqueKey = True
filter12.FilterTypes = FilterTypes.JoinFilter
filter12.JoinFilterClause = filterClause12
' Add the join filter to the child article.
article2.AddMergeJoinFilter(filter12)
' Parent article.
filter23.JoinArticleName = articleName2
' Child article.
filter23.ArticleName = articleName3
filter23.FilterName = filterName23
filter23.JoinUniqueKey = True
filter23.FilterTypes = FilterTypes.JoinFilter
filter23.JoinFilterClause = filterClause23
' Add the join filter to the child article.
article3.AddMergeJoinFilter(filter23)
Catch ex As Exception
' Do error handling here and rollback the transaction.
Throw New ApplicationException( _
"The filtered articles could not be created", ex)
Finally
conn.Disconnect()
End Try
Questo esempio modifica e l'articolo di merge esistente per associare un gestore della logica di business all'articolo. Per altre informazioni, vedere sp_helpmergearticlecolumn (Transact-SQL)).
// Define the Publisher, publication, and article names.
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2012";
string articleName = "SalesOrderHeader";
// Set the friendly name of the business logic handler.
string customLogic = "OrderEntryLogic";
MergeArticle article = new MergeArticle();
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Set the required properties for the article.
article.ConnectionContext = conn;
article.Name = articleName;
article.DatabaseName = publicationDbName;
article.PublicationName = publicationName;
// Load the article properties.
if (article.LoadProperties())
{
article.ArticleResolver = customLogic;
}
else
{
// Throw an exception of the article does not exist.
throw new ApplicationException(String.Format(
"{0} is not published in {1}", articleName, publicationName));
}
}
catch (Exception ex)
{
// Do error handling here and rollback the transaction.
throw new ApplicationException(String.Format(
"The business logic handler {0} could not be associated with " +
" the {1} article.",customLogic,articleName), ex);
}
finally
{
conn.Disconnect();
}
' Define the Publisher, publication, and article names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"
Dim articleName As String = "SalesOrderHeader"
' Set the friendly name of the business logic handler.
Dim customLogic As String = "OrderEntryLogic"
Dim article As MergeArticle = New MergeArticle()
' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the Publisher.
conn.Connect()
' Set the required properties for the article.
article.ConnectionContext = conn
article.Name = articleName
article.DatabaseName = publicationDbName
article.PublicationName = publicationName
' Load the article properties.
If article.LoadProperties() Then
article.ArticleResolver = customLogic
Else
' Throw an exception of the article does not exist.
Throw New ApplicationException(String.Format( _
"{0} is not published in {1}", articleName, publicationName))
End If
Catch ex As Exception
' Do error handling here and rollback the transaction.
Throw New ApplicationException(String.Format( _
"The business logic handler {0} could not be associated with " + _
" the {1} article.", customLogic, articleName), ex)
Finally
conn.Disconnect()
End Try
Commenti
Thread safety
Tutti i membri statici pubblici (Shared
in Microsoft Visual Basic) di questo tipo sono sicuri per le operazioni multithreading. Non è invece garantita la sicurezza dei membri dell'istanza.
Costruttori
MergeArticle() |
Crea una nuova istanza della classe MergeArticle. |
MergeArticle(String, String, String, ServerConnection) |
Crea una nuova istanza della MergeArticle classe con il nome, la pubblicazione, il database e la connessione specificati all'istanza di Microsoft SQL Server. |
Proprietà
AllowInteractiveResolver |
Ottiene o imposta un valore che indica se consentire alle sottoscrizioni di richiamare un sistema di risoluzione dei conflitti interattivo quando si verificano conflitti durante la sincronizzazione. |
ArticleId |
Ottiene il valore ID dell'articolo. (Ereditato da Article) |
ArticleResolver |
Ottiene o imposta il nome descrittivo del sistema di risoluzione dei conflitti personalizzato o del gestore della logica di business utilizzato durante la sincronizzazione dell'articolo. |
CachePropertyChanges |
Ottiene o imposta un valore che indica se memorizzare nella cache o se applicare immediatamente le modifiche apportate alle proprietà di replica. (Ereditato da ReplicationObject) |
CheckPermissions |
Ottiene o imposta la modalità di controllo delle autorizzazioni nel server di pubblicazione prima del caricamento delle modifiche da un Sottoscrittore. |
ColumnTracking |
Ottiene o imposta la modalità di rilevamento dei conflitti durante la sincronizzazione delle righe di dati. |
CompensateForErrors |
Ottiene o imposta un valore che indica se vengono eseguite azioni di compensazione quando si verificano errori durante la sincronizzazione. |
ConflictTable |
Ottiene il nome della tabella utilizzata per rilevare i conflitti che si verificano durante la sincronizzazione di un articolo di merge. |
ConnectionContext |
Ottiene o imposta la connessione a un'istanza di Microsoft SQL Server. (Ereditato da ReplicationObject) |
CreateArticleAsHeterogeneous |
Ottiene o imposta un valore che indica se deve essere creato un articolo eterogeneo. (Ereditato da Article) |
CreationScript |
Ottiene o imposta il nome e il percorso completo del file di script Transact-SQL utilizzato per creare l'oggetto di destinazione nel Sottoscrittore. (Ereditato da Article) |
DatabaseName |
Ottiene o imposta il nome del database che contiene i dati e gli oggetti pubblicati nell'articolo. (Ereditato da Article) |
DeleteTracking |
Ottiene o imposta un valore che indica se viene eseguita la replica delle eliminazioni. |
Description |
Ottiene o imposta una descrizione in formato testo dell'articolo. (Ereditato da Article) |
DestinationObjectName |
Ottiene o imposta l'oggetto di database che è l'oggetto di database di origine per l'articolo nel Sottoscrittore. (Ereditato da Article) |
DestinationObjectOwner |
Ottiene o imposta il proprietario dello schema dell'oggetto di database di origine per l'articolo nel Sottoscrittore. (Ereditato da Article) |
FilterClause |
Ottiene o imposta la clausola WHERE (Transact-SQL) valutata per filtrare un articolo orizzontalmente. |
IdentityRangeManagementOption |
Ottiene o imposta le opzioni di gestione degli intervalli di valori Identity per l'articolo. (Ereditato da Article) |
IdentityRangeThreshold |
Ottiene o imposta il valore in corrispondenza del quale viene assegnato un nuovo intervallo di valori della colonna Identity a un server di pubblicazione o a un Sottoscrittore. (Ereditato da Article) |
IsExistingObject |
Ottiene un valore che indica se l'oggetto esiste nel server. (Ereditato da ReplicationObject) |
MultipleColumnUpdate |
Ottiene o imposta un valore che indica se aggiornare più colonne. |
Name |
Ottiene o imposta il nome dell'articolo. (Ereditato da Article) |
PartitionOption |
Ottiene o imposta le opzioni di filtro quando un articolo viene filtrato mediante un filtro di riga con parametri. |
PreCreationMethod |
Ottiene o imposta l'azione da intraprendere quando l'oggetto pubblicato esiste già nel database di sottoscrizione. (Ereditato da Article) |
ProcessingOrder |
Ottiene o imposta l'ordine di elaborazione dell'articolo durante la sincronizzazione. |
PublicationName |
Ottiene o imposta il nome della pubblicazione a cui appartiene l'articolo. (Ereditato da Article) |
PublisherIdentityRangeSize |
Ottiene o imposta l'intervallo di valori Identity assegnati alle colonne della tabella nel server di pubblicazione. (Ereditato da Article) |
ResolverInfo |
Ottiene o imposta dati e parametri aggiuntivi che devono essere utilizzati da un sistema di risoluzione dei conflitti basato su COM. |
SchemaOption |
Ottiene o imposta le opzioni di creazione dello schema per un articolo. (Ereditato da Article) |
SnapshotObjectName |
Ottiene il nome dell'oggetto di database che rappresenta i dati dello snapshot iniziale per l'articolo. |
SnapshotObjectOwner |
Ottiene il proprietario dell'oggetto di database che rappresenta i dati dello snapshot iniziale per l'articolo. |
SourceObjectName |
Ottiene o imposta il nome dell'oggetto di database da pubblicare. (Ereditato da Article) |
SourceObjectOwner |
Ottiene o imposta il proprietario dell'oggetto di database da pubblicare. (Ereditato da Article) |
SqlServerName |
Ottiene il nome dell'istanza di Microsoft SQL Server a cui è connesso questo oggetto. (Ereditato da ReplicationObject) |
Status |
Ottiene o imposta lo stato dell'articolo di merge. |
StreamBlobColumns |
Ottiene o imposta un valore che indica se viene utilizzata l'ottimizzazione del flusso di dati per la replica di colonne di oggetti binari di grandi dimensioni (BLOB). |
SubscriberIdentityRangeSize |
Ottiene o imposta il numero massimo di nuove righe che è possibile inserire in una colonna Identity di una tabella in un Sottoscrittore prima di allocare un altro intervallo di valori Identity. (Ereditato da Article) |
SubscriberUploadOption |
Ottiene o imposta il comportamento degli aggiornamenti eseguiti in un Sottoscrittore con una sottoscrizione client. |
Type |
Ottiene o imposta il tipo dell'articolo. (Ereditato da Article) |
UserData |
Ottiene o imposta una proprietà di un oggetto che consente agli utenti di collegare i relativi dati all'oggetto in questione. (Ereditato da ReplicationObject) |
VerifyResolverSignature |
Ottiene o imposta le opzioni per la verifica della firma digitale su un sistema di risoluzione dei conflitti basato su COM per determinare se proviene da una fonte attendibile. |
VerticalPartition |
Ottiene un valore che indica se tutte le colonne vengono pubblicate in un articolo di tabella. (Ereditato da Article) |
Metodi
AddMergeJoinFilter(MergeJoinFilter) |
Aggiunge un filtro di join all'articolo di merge. |
AddReplicatedColumns(Array) |
Aggiunge le colonne specificate all'articolo di merge. |
ChangeMergeJoinFilter(MergeJoinFilter, MergeJoinFilter) |
Modifica un filtro di join definito su un articolo di merge. |
CheckValidCreation() |
Controlla la creazione dell'articolo valido. (Ereditato da Article) |
CheckValidDefinition(Boolean) |
Indica se la definizione è valida. (Ereditato da Article) |
CommitPropertyChanges() |
Invia tutte le istruzioni di modifica delle proprietà memorizzate nella cache all'istanza di Microsoft SQL Server. (Ereditato da ReplicationObject) |
Create() |
Crea un nuovo articolo sull'istanza attualmente connessa di SQL Server in base alle proprietà correnti dell'oggetto TransArticle o dell'oggetto MergeArticle . (Ereditato da Article) |
Decouple() |
Disaccoppia dal server l'oggetto di replica a cui si fa riferimento. (Ereditato da ReplicationObject) |
EnumMergeJoinFilters() |
Restituisce tutti i filtri di join definiti per l'articolo di merge. |
GetChangeCommand(StringBuilder, String, String) |
Restituisce il comando di modifica dalla replica. (Ereditato da ReplicationObject) |
GetCreateCommand(StringBuilder, Boolean, ScriptOptions) |
Restituisce il comando di creazione dalla replica. (Ereditato da ReplicationObject) |
GetDropCommand(StringBuilder, Boolean) |
Restituisce il comando di eliminazione dalla replica. (Ereditato da ReplicationObject) |
InitializeSharedPropertiesBasedOnExistingArticles() |
Indica se inizializzare le proprietà condivise in base agli articoli esistenti. |
InternalRefresh(Boolean) |
Avvia un aggiornamento interno dalla replica. (Ereditato da ReplicationObject) |
ListReplicatedColumns() |
Restituisce le colonne esistenti in un articolo partizionato in senso verticale. |
Load() |
Carica le proprietà di un oggetto esistente dal server. (Ereditato da ReplicationObject) |
LoadProperties() |
Carica le proprietà di un oggetto esistente dal server. (Ereditato da ReplicationObject) |
Refresh() |
Ricarica le proprietà dell'oggetto. (Ereditato da ReplicationObject) |
Remove() |
Rimuove un articolo esistente nell'istanza attualmente connessa di SQL Server in base alle proprietà correnti dell'oggetto TransArticle o dell'oggetto MergeArticle . (Ereditato da Article) |
RemoveMergeJoinFilter(String) |
Rimuove il filtro di merge join specificato dall'articolo. |
RemoveReplicatedColumns(Array) |
Rimuove le colonne esistenti da un articolo partizionato in senso verticale. |
Script(ScriptOptions) |
Genera uno script Transact-SQL che può essere eseguito per creare o eliminare l'oggetto TransArticle o l'oggetto MergeArticle nel server. (Ereditato da Article) |
ScriptMergeJoinFilter(MergeJoinFilter, ScriptOptions) |
Restituisce uno script Transact-SQL del filtro merge join associato all'articolo di merge. |