ArticleOptions Enum

Definition

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

C#
public enum ArticleOptions
Inheritance
ArticleOptions

Fields

Name Value Description
LogBased 1

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

ManualFilterProc 2

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

LogBasedManualFilterProc 3

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.

ManualSyncView 4

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

LogBasedManualSyncView 5

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.

LogBasedManualBoth 7

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.

ProcExecution 8

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

TableBased 10

The source object for the published article is a table.

SerializableProcExecution 24

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.

ProcSchemaOnly 32

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

ViewSchemaOnly 64

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

AggregateSchemaOnly 96

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

FunctionSchemaOnly 128

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

SynonymSchemaOnly 160

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

IndexedView 256

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

IndexedViewLogBased 257

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

IndexedViewLogBasedManualFilterProc 259

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 261

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.

IndexedViewLogBasedManualBoth 263

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.

IndexedViewSchemaOnly 320

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

Examples

C#
// 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();
}

Remarks

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.

Applies to

Product Versions
SQL Server .NET SDK 2016