MergeArticle 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.
Repräsentiert einen Artikel in einer Merge-Publikation.
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
- Vererbung
Beispiele
Dieses Beispiel erzeugt drei Merge-Artikel und deren zugehörige Join-Filter.
// 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
Dieses Beispiel ändert einen bestehenden Merge-Artikel, um einen Business Logic Handler mit dem Artikel zu verknüpfen. Weitere Informationen finden Sie unter 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
Hinweise
Threadsicherheit
Alle öffentlichen statischen (Shared in Microsoft Visual Basic) Mitglieder dieses Typs sind für Multithread-Operationen sicher. Instanzenmitglieder sind nicht garantiert threadsicher.
Konstruktoren
| Name | Beschreibung |
|---|---|
| MergeArticle() |
Erstellt eine neue Instanz der MergeArticle Klasse. |
| MergeArticle(String, String, String, ServerConnection) |
Erstellt eine neue Instanz der MergeArticle Klasse mit dem angegebenen Namen, der Veröffentlichung, der Datenbank und der Verbindung zur Instanz von Microsoft SQL Server. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| AllowInteractiveResolver |
Erhält oder setzt fest, ob Abonnements einen interaktiven Resolver aufrufen dürfen, wenn während der Synchronisation Konflikte auftreten. |
| ArticleId |
Erhält den Artikel-ID-Wert. (Geerbt von Article) |
| ArticleResolver |
Erhält oder setzt den freundlichen Namen des benutzerdefinierten Konfliktlösers oder Business Logic Handlers, der bei der Synchronisierung des Artikels verwendet wird. |
| CachePropertyChanges |
Es gibt oder setzt, ob Änderungen an den Replikationseigenschaften zwischengespeichert oder sofort angewendet werden. (Geerbt von ReplicationObject) |
| CheckPermissions |
Erhält oder legt, wie die Berechtigungen beim Publisher überprüft werden, bevor Änderungen von einem Abonnenten hochgeladen werden. |
| ColumnTracking |
Ermittelt oder legt fest, wie Konflikte beim Synchronisieren von Datenzeilen erkannt werden. |
| CompensateForErrors |
Erhält oder setzt, ob kompensierende Aktionen ausgeführt werden, wenn während der Synchronisation Fehler auftreten. |
| ConflictTable |
Erhält den Namen der Tabelle, die zur Verfolgung von Konflikten verwendet wird, die beim Synchronisieren eines Merge-Artikels auftreten. |
| ConnectionContext |
Erhält oder setzt die Verbindung zu einer Instanz von Microsoft SQL Server. (Geerbt von ReplicationObject) |
| CreateArticleAsHeterogeneous |
Erhält oder setzt einen Wert, der angibt, ob ein Artikel als heterogen erstellt werden soll. (Geerbt von Article) |
| CreationScript |
Erhält oder setzt den Namen und den vollständigen Pfad der Transact-SQL Skriptdatei, die zur Erstellung des Zielobjekts beim Subscriber verwendet wird. (Geerbt von Article) |
| DatabaseName |
Erhält oder setzt den Namen der Datenbank, die die Daten und die im Artikel veröffentlichten Objekte enthält. (Geerbt von Article) |
| DeleteTracking |
Erhält oder setzt, ob Löschungen repliziert werden. |
| Description |
Erhält oder setzt eine textuelle Beschreibung des Artikels ein. (Geerbt von Article) |
| DestinationObjectName |
Erhält oder setzt das Datenbankobjekt, das das Quelldatenbankobjekt für den Artikel ist, beim Subscriber. (Geerbt von Article) |
| DestinationObjectOwner |
Erhält oder setzt den Schemabesitzer des Quelldatenbankobjekts für den Artikel beim Subscriber. (Geerbt von Article) |
| FilterClause |
Erhält oder setzt die WHERE-Klausel (Transact-SQL), die ausgewertet wird, um einen Artikel horizontal zu filtern. |
| IdentityRangeManagementOption |
Erhält oder setzt die Optionen zur Verwaltung des Identitätsbereichs für den Artikel. (Geerbt von Article) |
| IdentityRangeThreshold |
Erhält oder setzt den Wert, bei dem ein neuer Bereich von Identitätsspaltenwerten einem Publisher oder einem Abonnenten zugewiesen wird. (Geerbt von Article) |
| IsExistingObject |
Es bekommt, ob das Objekt auf dem Server existiert oder nicht. (Geerbt von ReplicationObject) |
| MultipleColumnUpdate |
Erhält oder setzt einen Wert, der angibt, ob mehrere Spalten aktualisiert werden sollen. |
| Name |
Erhält oder setzt den Namen des Artikels. (Geerbt von Article) |
| PartitionOption |
Erhält oder setzt die Filteroptionen, wenn ein Artikel mit einem parametrisierten Zeilenfilter gefiltert wird. |
| PreCreationMethod |
Erhält oder setzt die Aktion, wenn das veröffentlichte Objekt bereits in der Abonnementdatenbank existiert. (Geerbt von Article) |
| ProcessingOrder |
Erhält oder setzt die Verarbeitungsreihenfolge des Artikels während der Synchronisation. |
| PublicationName |
Erhält oder setzt den Namen der Publikation, zu der der Artikel gehört. (Geerbt von Article) |
| PublisherIdentityRangeSize |
Erhält oder setzt den Bereich der Identitätswerte, die den Tabellenspalten im Publisher zugewiesen werden. (Geerbt von Article) |
| ResolverInfo |
Erhält oder setzt zusätzliche Daten und Parameter, die von einem COM-basierten Konfliktlöser verwendet werden sollen. |
| SchemaOption |
Erhält oder setzt die Schema-Erstellungsoptionen für einen Artikel. (Geerbt von Article) |
| SnapshotObjectName |
Erhält den Namen des Datenbankobjekts, das die anfänglichen Snapshot-Daten für den Artikel darstellt. |
| SnapshotObjectOwner |
Erhält den Besitzer des Datenbankobjekts, das die anfänglichen Snapshot-Daten für den Artikel darstellt. |
| SourceObjectName |
Erhält oder setzt den Namen des veröffentlichten Datenbankobjekts. (Geerbt von Article) |
| SourceObjectOwner |
Erhält oder setzt den Besitzer des veröffentlichten Datenbankobjekts. (Geerbt von Article) |
| SqlServerName |
Erhält den Namen der Microsoft SQL Server-Instanz, mit der dieses Objekt verbunden ist. (Geerbt von ReplicationObject) |
| Status |
Erhält oder setzt den Status des Merge-Artikels. |
| StreamBlobColumns |
Erhält oder setzt fest, ob eine Datenstrom-Optimierung verwendet wird, wenn binäre große Objektspalten (BLOB) repliziert werden. |
| SubscriberIdentityRangeSize |
Erhält oder legt die maximale Anzahl neuer Zeilen fest, die in eine Identitätsspalte in einer Tabelle bei einem Abonnenten eingefügt werden können, bevor ein anderer Identitätsbereich zugewiesen werden muss. (Geerbt von Article) |
| SubscriberUploadOption |
Erhält oder stellt das Verhalten von Updates ein, die bei einem Abonnenten mit einem Client-Abonnement durchgeführt werden. |
| Type |
Erhält oder setzt die Art des Artikels. (Geerbt von Article) |
| UserData |
Erhält oder setzt eine Objekt-Eigenschaft, die es Nutzern erlaubt, eigene Daten an das Objekt anzuhängen. (Geerbt von ReplicationObject) |
| VerifyResolverSignature |
Erhält oder setzt die Optionen zur Überprüfung der digitalen Signatur auf einem COM-basierten Konfliktlöser, um festzustellen, ob sie von einer vertrauenswürdigen Quelle stammt. |
| VerticalPartition |
Erhält einen Wert, der angibt, ob alle Spalten in einem Tabellenartikel veröffentlicht sind. (Geerbt von Article) |
Methoden
| Name | Beschreibung |
|---|---|
| AddMergeJoinFilter(MergeJoinFilter) |
Fügt dem Merge-Artikel einen Join-Filter hinzu. |
| AddReplicatedColumns(Array) |
Fügt die angegebenen Spalten dem Merge-Artikel hinzu. |
| ChangeMergeJoinFilter(MergeJoinFilter, MergeJoinFilter) |
Ändert einen Join-Filter, der bei einem Merge-Artikel definiert wurde. |
| CheckValidCreation() |
Überprüft die gültige Artikelerstellung. (Geerbt von Article) |
| CheckValidDefinition(Boolean) |
Gibt an, ob die Definition gültig ist. (Geerbt von Article) |
| CommitPropertyChanges() |
Sendet alle zwischengespeicherten Property-Change-Anweisungen an die Instanz von Microsoft SQL Server. (Geerbt von ReplicationObject) |
| Create() |
Erstellt einen neuen Artikel über die aktuell verbundene Instanz von SQL Server basierend auf den aktuellen Eigenschaften des TransArticle Objekts oder des MergeArticle Objekts. (Geerbt von Article) |
| Decouple() |
Entkoppelt das referenzierte Replikationsobjekt vom Server. (Geerbt von ReplicationObject) |
| EnumMergeJoinFilters() |
Gibt die Join-Filter zurück, die für den Merge-Artikel definiert sind. |
| GetChangeCommand(StringBuilder, String, String) |
Gibt den Änderungsbefehl aus der Replikation zurück. (Geerbt von ReplicationObject) |
| GetCreateCommand(StringBuilder, Boolean, ScriptOptions) |
Gibt den Create-Befehl aus der Replikation zurück. (Geerbt von ReplicationObject) |
| GetDropCommand(StringBuilder, Boolean) |
Gibt den Drop-Befehl aus der Replikation zurück. (Geerbt von ReplicationObject) |
| InitializeSharedPropertiesBasedOnExistingArticles() |
Gibt an, ob gemeinsame Eigenschaften basierend auf bestehenden Artikeln initialisiert werden sollen. |
| InternalRefresh(Boolean) |
Führt eine interne Aktualisierung aus der Replikation ein. (Geerbt von ReplicationObject) |
| ListReplicatedColumns() |
Gibt die Spalten zurück, die in einem vertikal aufgeteilten Artikel existieren. |
| Load() |
Lädt die Eigenschaften eines bestehenden Objekts vom Server. (Geerbt von ReplicationObject) |
| LoadProperties() |
Lädt die Eigenschaften eines bestehenden Objekts vom Server. (Geerbt von ReplicationObject) |
| Refresh() |
Lädt die Eigenschaften des Objekts neu. (Geerbt von ReplicationObject) |
| Remove() |
Entfernt einen bestehenden Artikel auf der aktuell verbundenen Instanz von SQL Server basierend auf den aktuellen Eigenschaften des TransArticle Objekts oder des MergeArticle Objekts. (Geerbt von Article) |
| RemoveMergeJoinFilter(String) |
Entfernt den angegebenen Merge-Join-Filter aus dem Artikel. |
| RemoveReplicatedColumns(Array) |
Entfernt vorhandene Spalten aus einem vertikal partitionierten Artikel. |
| Script(ScriptOptions) |
Erzeugt ein Transact-SQL Skript, das ausgeführt werden kann, um das TransArticle Objekt oder das MergeArticle Objekt auf dem Server zu erstellen oder zu löschen. (Geerbt von Article) |
| ScriptMergeJoinFilter(MergeJoinFilter, ScriptOptions) |
Gibt ein Transact-SQL Skript des Merge-Join-Filters zurück, das dem Merge-Artikel angehängt ist. |