MergeArticle Class
SQL Server 2012
Represents an article in a merge publication.
System.Object
Microsoft.SqlServer.Replication.ReplicationObject
Microsoft.SqlServer.Replication.Article
Microsoft.SqlServer.Replication.MergeArticle
Microsoft.SqlServer.Replication.ReplicationObject
Microsoft.SqlServer.Replication.Article
Microsoft.SqlServer.Replication.MergeArticle
Namespace: Microsoft.SqlServer.Replication
Assembly: Microsoft.SqlServer.Rmo (in Microsoft.SqlServer.Rmo.dll)
The MergeArticle type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | MergeArticle() | Creates a new instance of the MergeArticle class. |
![]() | MergeArticle(String, String, String, ServerConnection) | Creates a new instance of the MergeArticle class with the specified name, publication, database, and connection to the instance of Microsoft SQL Server. |
| Name | Description | |
|---|---|---|
![]() | AllowInteractiveResolver | Gets or sets whether to allow subscriptions to invoke an interactive resolver when conflicts occur during synchronization. |
![]() | ArticleId | Gets the article ID value. (Inherited from Article.) |
![]() | ArticleResolver | Gets or sets the friendly name of the custom conflict resolver or business logic handler used when synchronizing the article. |
![]() | CachePropertyChanges | Gets or sets whether to cache changes made to the replication properties or to apply them immediately. (Inherited from ReplicationObject.) |
![]() | CheckPermissions | Gets or sets how the permissions are checked at the Publisher before changes are uploaded from a Subscriber. |
![]() | ColumnTracking | Gets or sets how conflicts are detected when synchronizing data rows. |
![]() | CompensateForErrors | Gets or sets whether compensating actions are taken when errors are encountered during synchronization. |
![]() | ConflictTable | Gets the name of the table used to track conflicts that occur when synchronizing a merge article. |
![]() | ConnectionContext | Gets or sets the connection to an instance of Microsoft SQL Server. (Inherited from ReplicationObject.) |
![]() | CreateArticleAsHeterogeneous | Gets or sets a value that indicates whether to create an article as heterogeneous. (Inherited from Article.) |
![]() | CreationScript | Gets or sets the name and full path of the Transact-SQL script file that is used to create the destination object at the Subscriber. (Inherited from Article.) |
![]() | DatabaseName | Gets or sets the name of the database that contains the data and the objects that are published in the article. (Inherited from Article.) |
![]() | DeleteTracking | Gets or sets whether deletes are replicated. |
![]() | Description | Gets or sets a textual description of the article. (Inherited from Article.) |
![]() | DestinationObjectName | Gets or sets the database object that is the source database object for the article at the Subscriber. (Inherited from Article.) |
![]() | DestinationObjectOwner | Gets or sets the schema owner of the source database object for the article at the Subscriber. (Inherited from Article.) |
![]() | FilterClause | Gets or sets the WHERE (Transact-SQL) clause that is evaluated to filter an article horizontally. |
![]() | IdentityRangeManagementOption | Gets or sets the identity range management options for the article. (Inherited from Article.) |
![]() | IdentityRangeThreshold | Gets or sets the value at which a new range of identity column values are assigned to a Publisher or to a Subscriber. (Inherited from Article.) |
![]() | IsExistingObject | Gets whether the object exists on the server or not. (Inherited from ReplicationObject.) |
![]() | MultipleColumnUpdate | Infrastructure. Gets or sets a value that indicates whether to update multiple columns. |
![]() | Name | Gets or sets the name of the article. (Inherited from Article.) |
![]() | PartitionOption | Gets or sets the filtering options when an article is filtered using a parameterized row filter. |
![]() | PreCreationMethod | Gets or sets the action to take when the published object already exists in the subscription database. (Inherited from Article.) |
![]() | ProcessingOrder | Gets or sets the processing order of the article during synchronization. |
![]() | PublicationName | Gets or sets the name of the publication to which the article belongs. (Inherited from Article.) |
![]() | PublisherIdentityRangeSize | For a TransArticle object, gets or sets the range of identity values assigned to table columns at the Publisher. For a MergeArticle object, gets or sets the range of identity values assigned to table columns at Subscribers that have server subscriptions. (Inherited from Article.) |
![]() | ResolverInfo | Gets or sets additional data and parameters that are to be used by a COM-based conflict resolver. |
![]() | SchemaOption | Gets or sets the schema creation options for an article. (Inherited from Article.) |
![]() | SnapshotObjectName | Gets the name of the database object that represents the initial snapshot data for the article. |
![]() | SnapshotObjectOwner | Gets the owner of the database object that represents the initial snapshot data for the article. |
![]() | SourceObjectName | Gets or sets the name of the database object that is being published. (Inherited from Article.) |
![]() | SourceObjectOwner | Gets or sets the owner of the database object that is being published. (Inherited from Article.) |
![]() | SqlServerName | Gets the name of the Microsoft SQL Server instance to which this object is connected. (Inherited from ReplicationObject.) |
![]() | Status | Gets or sets the status of the merge article. |
![]() | StreamBlobColumns | Gets or sets whether a data stream optimization is used when replicating binary large object (BLOB) columns. |
![]() | SubscriberIdentityRangeSize | Gets or sets the maximum number of new rows that can be inserted into an identity column in a table at a Subscriber before another identity range must be allocated. (Inherited from Article.) |
![]() | SubscriberUploadOption | Gets or sets the behavior of updates made at a Subscriber with a client subscription. |
![]() | Type | Gets or sets the type of article. (Inherited from Article.) |
![]() | UserData | Gets or sets an object property that allows users to attach their own data to the object. (Inherited from ReplicationObject.) |
![]() | VerifyResolverSignature | Gets or sets the options for verifying the digital signature on a COM-based conflict resolver to determine if it is from a trusted source. |
![]() | VerticalPartition | Gets a value that indicates whether all columns are published in a table article. (Inherited from Article.) |
| Name | Description | |
|---|---|---|
![]() | AddMergeJoinFilter | Adds a join filter to the merge article. |
![]() | AddReplicatedColumns | Adds the specified columns to the merge article. |
![]() | ChangeMergeJoinFilter | Changes a join filter that defined on a merge article. |
![]() | CheckValidCreation | Infrastructure. Checks the valid article creation. (Inherited from Article.) |
![]() | CheckValidDefinition | Infrastructure. Indicates whether the definition is valid. (Inherited from Article.) |
![]() | CommitPropertyChanges | Sends all the cached property change statements to the instance of Microsoft SQL Server. (Inherited from ReplicationObject.) |
![]() | Create | Creates a new article on the currently connected instance of SQL Server based on the current properties of the TransArticle object or the MergeArticle object. (Inherited from Article.) |
![]() | Decouple | Decouples the referenced replication object from the server. (Inherited from ReplicationObject.) |
![]() | EnumMergeJoinFilters | Returns the join filters that are defined for the merge article. |
![]() | Equals | (Inherited from Object.) |
![]() | Finalize | (Inherited from Object.) |
![]() | GetChangeCommand | Infrastructure. Returns the change command from the replication. (Inherited from ReplicationObject.) |
![]() | GetCreateCommand | Infrastructure. Returns the create command from the replication. (Inherited from ReplicationObject.) |
![]() | GetDropCommand | Infrastructure. Returns the drop command from the replication. (Inherited from ReplicationObject.) |
![]() | GetHashCode | (Inherited from Object.) |
![]() | GetType | (Inherited from Object.) |
![]() | InitializeSharedPropertiesBasedOnExistingArticles | Infrastructure. Indicates whether to initialize shared properties based on existing articles. |
![]() | InternalRefresh | Infrastructure. Initiates an internal refresh from the replication. (Inherited from ReplicationObject.) |
![]() | ListReplicatedColumns | Returns the columns that exist in a vertically partitioned article. |
![]() | Load | Loads the properties of an existing object from the server. (Inherited from ReplicationObject.) |
![]() | LoadProperties | Loads the properties of an existing object from the server. (Inherited from ReplicationObject.) |
![]() | MemberwiseClone | (Inherited from Object.) |
![]() | Refresh | Reloads the properties of the object. (Inherited from ReplicationObject.) |
![]() | Remove | Removes an existing article on the currently connected instance of SQL Server based on the current properties of the TransArticle object or the MergeArticle object. (Inherited from Article.) |
![]() | RemoveMergeJoinFilter | Removes the specified merge join filter from the article. |
![]() | RemoveReplicatedColumns | Removes existing columns from a vertically partitioned article. |
![]() | Script | Generates a Transact-SQL script that can be executed to create or delete the TransArticle object or the MergeArticle object on the server. (Inherited from Article.) |
![]() | ScriptMergeJoinFilter | Returns a Transact-SQL script of the merge join filter attached to the merge article. |
![]() | ToString | (Inherited from Object.) |
This example creates three merge articles and their related join filters.
// 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
This example changes and existing merge article to associate a business logic handler with the article. For more information, see NIB Implement a Business Logic Handler for a Merge Article (RMO Programming).
// 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
