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.
Stellt einen Artikel in einer Mergeveröffentlichung dar.
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
In diesem Beispiel werden drei Mergeartikel und die zugehörigen Verknüpfungsfilter erstellt.
// 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
In diesem Beispiel wird ein vorhandener Mergeartikel geändert, um dem Artikel einen Geschäftslogikhandler zuzuordnen. 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) Member dieses Typs sind für Multithreadvorgänge sicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Konstruktoren
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 angegebenen Veröffentlichung, der Angegebenen Datenbank und der Verbindung mit der Instanz von Microsoft SQL Server. |
Eigenschaften
AllowInteractiveResolver |
Ruft ab oder legt fest, ob Abonnements den interaktiven Konfliktlöser aufrufen können, wenn Konflikte während der Synchronisierung auftreten. |
ArticleId |
Ruft den ID-Wert des Artikels ab. (Geerbt von Article) |
ArticleResolver |
Ruft den Anzeigenamen des benutzerdefinierten Konfliktlösers oder Geschäftslogikhandlers ab, der beim Synchronisieren des Artikels verwendet wurde, oder legt ihn fest. |
CachePropertyChanges |
Ruft ab oder legt fest, ob Änderungen an den Replikationseigenschaften zwischengespeichert oder sofort angewendet werden sollen. (Geerbt von ReplicationObject) |
CheckPermissions |
Ruft ab oder legt fest, auf welche Weise die Berechtigungen beim Verleger überprüft werden, bevor Änderungen von einem Abonnenten hochgeladen werden. |
ColumnTracking |
Ruft ab oder legt fest, wie beim Synchronisieren von Datenzeilen Konflikte erkannt werden. |
CompensateForErrors |
Ruft ab oder legt fest, ob kompensierende Aktionen ausgeführt werden, wenn während der Synchronisierung Fehler auftreten. |
ConflictTable |
Ruft den Namen der Tabelle ab, mit der Konflikte nachverfolgt werden, die beim Synchronisieren eines Mergeartikels auftreten. |
ConnectionContext |
Ruft die Verbindung mit einer Instanz von Microsoft SQL Server ab oder legt sie fest. (Geerbt von ReplicationObject) |
CreateArticleAsHeterogeneous |
Ruft einen Wert ab, der angibt, ob ein Artikel als heterogen erstellt werden soll, oder legt ihn fest. (Geerbt von Article) |
CreationScript |
Ruft den Namen und den vollständigen Pfad der Transact-SQL-Skriptdatei ab, die zum Erstellen des Zielobjekts beim Abonnenten verwendet wird, oder legt diesen fest. (Geerbt von Article) |
DatabaseName |
Ruft den Namen der Datenbank ab, die die Daten und Objekte enthält, die im Artikel veröffentlicht werden, oder legt ihn fest. (Geerbt von Article) |
DeleteTracking |
Ruft ab oder legt fest, ob Löschvorgänge repliziert werden. |
Description |
Ruft eine Textbeschreibung des Artikels ab oder legt sie fest. (Geerbt von Article) |
DestinationObjectName |
Ruft das Datenbankobjekt ab, das das Quelldatenbankobjekt für den Artikel auf dem Abonnenten ist, oder legt es fest. (Geerbt von Article) |
DestinationObjectOwner |
Ruft den Schemabesitzer des Quelldatenbankobjekts für den Artikel auf dem Abonnenten ab oder legt ihn fest. (Geerbt von Article) |
FilterClause |
Ruft die WHERE-Klausel (Transact-SQL) ab, die ausgewertet wird, um einen Artikel horizontal zu filtern, oder legt diese fest. |
IdentityRangeManagementOption |
Ruft die Optionen zur Identitätsbereichsverwaltung für den Artikel ab oder legt sie fest. (Geerbt von Article) |
IdentityRangeThreshold |
Ruft den Wert ab, bei dem einem Verleger oder einem Abonnenten ein neuer Bereich von Identitätsspaltenwerten zugewiesen wird, oder legt ihn fest. (Geerbt von Article) |
IsExistingObject |
Ruft ab, ob das Objekt auf dem Server vorhanden ist. (Geerbt von ReplicationObject) |
MultipleColumnUpdate |
Ruft einen Wert ab, der angibt, ob mehrere Spalten aktualisiert werden sollen, oder legt ihn fest. |
Name |
Ruft den Namen des Artikels ab oder legt ihn fest. (Geerbt von Article) |
PartitionOption |
Ruft die Filteroptionen ab, wenn ein Artikel mit einem parametrisierten Zeilenfilter gefiltert wird, oder legt diese fest. |
PreCreationMethod |
Ruft die Aktion ab, die ausgeführt werden soll, wenn das veröffentlichte Objekt bereits in der Abonnementdatenbank vorhanden ist, oder legt sie fest. (Geerbt von Article) |
ProcessingOrder |
Ruft während der Synchronisierung die Verarbeitungsreihenfolge des Artikels ab oder legt sie fest. |
PublicationName |
Ruft den Namen der Veröffentlichung ab, zu der der Artikel gehört, oder legt ihn fest. (Geerbt von Article) |
PublisherIdentityRangeSize |
Ruft den Bereich der Identitätswerte ab, die Tabellenspalten auf dem Verleger zugewiesen sind, oder legt diesen fest. (Geerbt von Article) |
ResolverInfo |
Ruft zusätzliche Daten und Parameter ab, die von einem COM-basierten Konfliktlöser verwendet werden sollen, oder legt diese fest. |
SchemaOption |
Ruft die Schemaerstellungsoptionen für einen Artikel ab oder legt sie fest. (Geerbt von Article) |
SnapshotObjectName |
Ruft den Namen des Datenbankobjekts ab, das die ersten Momentaufnahmedaten für den Artikel darstellt. |
SnapshotObjectOwner |
Ruft den Besitzer des Datenbankobjekts ab, das die ersten Momentaufnahmedaten für den Artikel darstellt. |
SourceObjectName |
Ruft den Namen des Datenbankobjekts ab, das veröffentlicht wird, oder legt ihn fest. (Geerbt von Article) |
SourceObjectOwner |
Ruft den Besitzer des Datenbankobjekts ab, das veröffentlicht wird, oder legt ihn fest. (Geerbt von Article) |
SqlServerName |
Ruft den Namen der Microsoft SQL Server-Instanz ab, mit der dieses Objekt verbunden ist. (Geerbt von ReplicationObject) |
Status |
Ruft den Status des Mergeartikels ab oder legt ihn fest. |
StreamBlobColumns |
Ruft ab oder legt fest, ob beim Replizieren von BLOB-Spalten (Binary Large Object) eine Datenstromoptimierung verwendet wird. |
SubscriberIdentityRangeSize |
Ruft die maximale Anzahl von neuen Zeilen ab, die auf einem Abonnenten in eine Identitätsspalte in einer Tabelle eingefügt werden können, bevor ein anderer Identitätsbereich zugeordnet werden muss, oder legt sie fest. (Geerbt von Article) |
SubscriberUploadOption |
Ruft das Verhalten von Updates ab, das von einem Abonnenten für ein Clientabonnement festgelegt wurde, oder legt es fest. |
Type |
Ruft den Artikeltyp ab oder legt ihn fest. (Geerbt von Article) |
UserData |
Ruft eine Objekteigenschaft ab, die es Benutzern ermöglicht, ihre eigenen Daten an das Objekt anzufügen, oder legt sie fest. (Geerbt von ReplicationObject) |
VerifyResolverSignature |
Ruft die Optionen zum Überprüfen der digitalen Signatur auf einem COM-basierten Konfliktlöser ab oder legt diese fest, um bestimmen zu können, ob dieser von einer vertrauenswürdigen Quelle stammt. |
VerticalPartition |
Ruft einen Wert ab, der angibt, ob alle Spalten in einem Tabellenartikel veröffentlicht werden. (Geerbt von Article) |
Methoden
AddMergeJoinFilter(MergeJoinFilter) |
Fügt dem Mergeartikel einen Joinfilter hinzu. |
AddReplicatedColumns(Array) |
Fügt dem Mergeartikel die angegebenen Spalten hinzu. |
ChangeMergeJoinFilter(MergeJoinFilter, MergeJoinFilter) |
Ändert einen Joinfilter, der für einen Mergeartikel 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 Eigenschaftsänderungsanweisungen an die Instanz von Microsoft SQL Server. (Geerbt von ReplicationObject) |
Create() |
Erstellt einen neuen Artikel für die aktuell verbundene Instanz von SQL Server basierend auf den aktuellen Eigenschaften des TransArticle -Objekts oder -MergeArticleObjekts. (Geerbt von Article) |
Decouple() |
Entkoppelt das Replikationsobjekt, auf das verwiesen wird, vom Server. (Geerbt von ReplicationObject) |
EnumMergeJoinFilters() |
Gibt die Joinfilter zurück, die für den Mergeartikel definiert wurden. |
GetChangeCommand(StringBuilder, String, String) |
Gibt den Änderungsbefehl von der Replikation zurück. (Geerbt von ReplicationObject) |
GetCreateCommand(StringBuilder, Boolean, ScriptOptions) |
Gibt den Erstellungsbefehl von der Replikation zurück. (Geerbt von ReplicationObject) |
GetDropCommand(StringBuilder, Boolean) |
Gibt den Löschbefehl von der Replikation zurück. (Geerbt von ReplicationObject) |
InitializeSharedPropertiesBasedOnExistingArticles() |
Gibt an, ob freigegebene Eigenschaften auf Grundlage vorhandener Artikel initialisiert werden sollen. |
InternalRefresh(Boolean) |
Initiiert eine interne Aktualisierung von der Replikation. (Geerbt von ReplicationObject) |
ListReplicatedColumns() |
Gibt die Spalten zurück, die in einem vertikal partitionierten Artikel vorhanden sind. |
Load() |
Lädt die Eigenschaften eines vorhandenen Objekts vom Server. (Geerbt von ReplicationObject) |
LoadProperties() |
Lädt die Eigenschaften eines vorhandenen Objekts vom Server. (Geerbt von ReplicationObject) |
Refresh() |
Lädt die Eigenschaften des Objekts erneut. (Geerbt von ReplicationObject) |
Remove() |
Entfernt einen vorhandenen Artikel für die aktuell verbundene Instanz von SQL Server basierend auf den aktuellen Eigenschaften des TransArticle -Objekts oder -MergeArticleObjekts. (Geerbt von Article) |
RemoveMergeJoinFilter(String) |
Entfernt den angegebenen Mergejoinfilter aus dem Artikel. |
RemoveReplicatedColumns(Array) |
Entfernt vorhandene Spalten aus einem vertikal partitionierten Artikel. |
Script(ScriptOptions) |
Generiert 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 Mergeverknüpfungsfilters zurück, der an den Mergeartikel angefügt ist. |