Partager via


FilterClause propriété

Obtient ou définit la clause SQL WHERE (sans mot clé WHERE) utilisée pour filtrer le jeu de résultats de la table de base.

Espace de noms :  Microsoft.Synchronization.Data.SqlServer
Assembly :  Microsoft.Synchronization.Data.SqlServer (dans Microsoft.Synchronization.Data.SqlServer.dll)

Syntaxe

'Déclaration
Public Property FilterClause As String
    Get
    Set
'Utilisation
Dim instance As SqlSyncTableProvisioning
Dim value As String

value = instance.FilterClause

instance.FilterClause = value
public string FilterClause { get; set; }
public:
property String^ FilterClause {
    String^ get ();
    void set (String^ value);
}
member FilterClause : string with get, set
function get FilterClause () : String
function set FilterClause (value : String)

Valeur de la propriété

Type : System. . :: . .String
Clause SQL WHERE (sans mot clé WHERE) utilisée pour filtrer le jeu de résultats de la table de base.

Notes

La clause de filtre est une clause WHERE sans le mot clé WHERE. Elle inclut un alias [side] pour la table de suivi des modifications Sync Framework. Par exemple, si vous souhaitez filtrer une table de manière à retourner uniquement les résultats des clients en Californie, la clause de filtre est semblable à ce qui suit : [side].[SalesTerritory] = 'CA'. Utilisez AddFilterColumn pour spécifier les colonnes incluses dans cette clause de filtre.

La clause de filtre peut également inclure des paramètres pour le filtrage basé sur paramètres. Par exemple, pour filtrer par type de client, la clause de filtre peut ressembler à ceci : [side].[CustomerType] = @customertype.

Les alias [base] et [side] sont définis par Sync Framework. [base] fait référence au nom de base de la table, tandis que [side] fait référence à la table de suivi des modifications. Par exemple, la table Customer est filtrée sur la base de la colonne CustomerType. Par défaut, [base] est un alias pour [Customer], tandis que [side] est un alias pour [Customer_tracking]. Comme la colonne CustomerType existe à la fois dans les tables de base et de suivi, les références à celle-ci doivent être qualifiées dans la clause de filtre ; sinon, la colonne est ambiguë et une erreur survient. Vous pouvez utiliser les noms de table réels à la place des alias [base] et [side], [Customer_tracking].[CustomerType] = @customertype par exemple.

Exemples

L'exemple suivant montre comment créer un modèle de filtre qui permette de filtrer en fonction de la colonne CustomerType de la table à l'aide d'un paramètre.

// 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.UserDescription = "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.UserDescription = "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()

Voir aussi

Référence

SqlSyncTableProvisioning Classe

Membres SqlSyncTableProvisioning

Espace de noms Microsoft.Synchronization.Data.SqlServer

Autres ressources

Procédure : filtrer des données pour la synchronisation de bases de données (SQL Server)