Export (0) Print
Expand All

ArticleOptions Enumeration

 

Applies To: SQL Server 2016 Preview

Enumerates the type of database objects that can be published by replication.

Namespace:   Microsoft.SqlServer.Replication
Assembly:  Microsoft.SqlServer.Rmo (in Microsoft.SqlServer.Rmo.dll)

public enum ArticleOptions

Member nameDescription
AggregateSchemaOnly

The source object for the published article is the schema definition of a user-defined aggregate function.

FunctionSchemaOnly

The source object for the published article is the schema definition of a user-defined function.

IndexedView

The source object for the published article is an indexed view.

IndexedViewLogBased

The source object for the published article is an indexed view, and data changes are read from the log.

IndexedViewLogBasedManualBoth

The source object for the published article is an indexed view. Data changes are read from the transaction log. The user defines the object that provides the initial snapshot data for the article and the stored procedure that filters the article horizontally.

IndexedViewLogBasedManualFilterProc

The source object for the published article is an indexed view. Data changes are read from the transaction log, and the user defines the stored procedure that filters the article horizontally.

IndexedViewLogBasedManualSyncView

The source object for the published article is an indexed view. Data changes are read from the transaction log, and the user defines the object that provides the initial snapshot data for the article.

IndexedViewSchemaOnly

The source object for the published article is the schema definition of an indexed view.

LogBased

The source object for the published article is a table. Data changes are read from the transaction log.

LogBasedManualBoth

The source object for the published article is a table. Data changes are read from the transaction log. The user defines the object that provides the initial snapshot data for the article and the stored procedure that filters the article horizontally.

LogBasedManualFilterProc

The source object for the published article is a table. Data changes are read from the transaction log, and the user defines the stored procedure that filters the article horizontally.

LogBasedManualSyncView

The source object for the published article is a table. Data changes are read from the transaction log, and the user defines the object that provides the initial snapshot data for the article.

ManualFilterProc

The user defines the stored procedure that filters the article horizontally.

ManualSyncView

The user defines the object that provides the initial snapshot data for the article.

ProcExecution

The source for the published article is the execution of a stored procedure. The commands in the stored procedure are replicated to the Subscriber.

ProcSchemaOnly

The source object for the published article is the schema definition of a stored procedure.

SerializableProcExecution

The source for the published article is the execution of a stored procedure. Only the commands of the stored procedure that are within the context of a transaction that can be serialized are replicated to the Subscriber.

SynonymSchemaOnly

The source object for the published article is the schema definition of a synonym.

TableBased

The source object for the published article is a table.

ViewSchemaOnly

The source object for the published article is the schema definition of a view.

The field values of ArticleOptions are equivalent to the supported values of the @type parameter in sp_addarticle (Transact-SQL) and sp_addmergearticle (Transact-SQL).

The ArticleOptions enumeration supports the FlagsAttribute option, which allows a bitwise combination of enumeration values. However, each supported article type has a separate value, so bitwise operations are not required.

Not all ArticleOptions are supported for all types of replication.

This namespace, class, or member is supported only in the Microsoft .NET Framework version 2.0.

Legacy Code Example

			// 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();
			}
Return to top
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

Show:
© 2015 Microsoft