FilterTypes Enumeration
SQL Server 2012
Enumerates values that specify the type of filters used in merge articles.
This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.
Namespace: Microsoft.SqlServer.Replication
Assembly: Microsoft.SqlServer.Rmo (in Microsoft.SqlServer.Rmo.dll)
// 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