MergeArticle Klasse

Definition

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.

Gilt für:

Weitere Informationen