SqlSyncTableProvisioning::AddFilterColumn Method
Adds a column that is used in the filter clause that is specified in FilterClause.
Assembly: Microsoft.Synchronization.Data.SqlServer (in Microsoft.Synchronization.Data.SqlServer.dll)
| Exception | Condition |
|---|---|
| ArgumentException | name is nullptr or empty. |
| DbProvisioningException | name represents a column that does not exist in the tableDescription that was specified when this SqlSyncTableProvisioning was constructed. |
The following example shows how to create a filter template that filters based on the CustomerType column of the table.
// Create a scope named "customertype_template", and add two tables to the scope. // GetDescriptionForTable gets the schema of each table, so that tracking // tables and triggers can be created for that table. DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription("customertype_template"); // Set a friendly description of the template. scopeDesc.UserComment = "Template for Customer and CustomerContact tables. Customer data is filtered by CustomerType parameter."; // Definition for tables. DbSyncTableDescription customerDescription = SqlSyncDescriptionBuilder.GetDescriptionForTable("Sales.Customer", serverConn); scopeDesc.Tables.Add(customerDescription); DbSyncTableDescription customerContactDescription = SqlSyncDescriptionBuilder.GetDescriptionForTable("Sales.CustomerContact", serverConn); scopeDesc.Tables.Add(customerContactDescription); // Create a provisioning object for "customertype_template" that can be used to create a template // from which filtered synchronization scopes can be created. We specify that // all synchronization-related objects should be created in a // database schema named "Sync". If you specify a schema, it must already exist // in the database. SqlSyncScopeProvisioning serverTemplate = new SqlSyncScopeProvisioning(serverConn, scopeDesc, SqlSyncScopeProvisioningType.Template); serverTemplate.ObjectSchema = "Sync"; // Specify the column in the Customer table to use for filtering data, // and the filtering clause to use against the tracking table. // "[side]" is an alias for the tracking table. // The CustomerType column that defines the filter is set up as a parameter in this template. // An actual customer type will be specified when the synchronization scope is created. serverTemplate.Tables["Sales.Customer"].AddFilterColumn("CustomerType"); serverTemplate.Tables["Sales.Customer"].FilterClause = "[side].[CustomerType] = @customertype"; SqlParameter param = new SqlParameter("@customertype", SqlDbType.NVarChar, 100); serverTemplate.Tables["Sales.Customer"].FilterParameters.Add(param); // Create the "customertype_template" template in the database. // This action creates tables and stored procedures in the database, so appropriate database permissions are needed. serverTemplate.Apply();
' Create a scope named "customertype_template", and add two tables to the scope. ' GetDescriptionForTable gets the schema of each table, so that tracking ' tables and triggers can be created for that table. Dim scopeDesc As New DbSyncScopeDescription("customertype_template") ' Set a friendly description of the template. scopeDesc.UserComment = "Template for Customer and CustomerContact tables. Customer data is filtered by CustomerType parameter." ' Definition for tables. Dim customerDescription As DbSyncTableDescription = SqlSyncDescriptionBuilder.GetDescriptionForTable("Sales.Customer", serverConn) scopeDesc.Tables.Add(customerDescription) Dim customerContactDescription As DbSyncTableDescription = SqlSyncDescriptionBuilder.GetDescriptionForTable("Sales.CustomerContact", serverConn) scopeDesc.Tables.Add(customerContactDescription) ' Create a provisioning object for "customertype_template" that can be used to create a template ' from which filtered synchronization scopes can be created. We specify that ' all synchronization-related objects should be created in a ' database schema named "Sync". If you specify a schema, it must already exist ' in the database. Dim serverTemplate As New SqlSyncScopeProvisioning(serverConn, scopeDesc, SqlSyncScopeProvisioningType.Template) serverTemplate.ObjectSchema = "Sync" ' Specify the column in the Customer table to use for filtering data, ' and the filtering clause to use against the tracking table. ' "[side]" is an alias for the tracking table. ' The CustomerType column that defines the filter is set up as a parameter in this template. ' An actual customer type will be specified when the synchronization scope is created. serverTemplate.Tables("Sales.Customer").AddFilterColumn("CustomerType") serverTemplate.Tables("Sales.Customer").FilterClause = "[side].[CustomerType] = @customertype" Dim param As New SqlParameter("@customertype", SqlDbType.NVarChar, 100) serverTemplate.Tables("Sales.Customer").FilterParameters.Add(param) ' Create the "customertype_template" template in the database. ' This action creates tables and stored procedures in the database, so appropriate permissions are needed. serverTemplate.Apply()
Show: