Freigeben über


MergeArticle Klasse

Definition

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.

Gilt für:

Weitere Informationen