Filtrage des données publiées

Le filtrage des articles de table vous permet de créer des partitions de données à publier. En filtrant les données publiées, vous pouvez :

  • Réduire la quantité de données envoyées via le réseau.
  • Réduire la quantité d’espace de stockage requis sur l’Abonné.
  • Personnaliser les publications et les applications basées sur les exigences des abonnés individuels.
  • Éviter ou réduire les conflits si les abonnés mettent à jour les données, car différentes partitions de données peuvent être envoyées vers différents abonnés (deux abonnés ne mettent pas à jour les mêmes valeurs de données).
  • Éviter de transmettre des données sensibles. Les filtres de lignes et les filtres de colonnes peuvent être utilisés pour restreindre l'accès d'un abonné aux données. Pour la réplication de fusion, des règles de sécurité s'appliquent si vous utilisez un filtre paramétré comportant HOST_NAME(). Pour plus d'informations, consultez la section « Filtrage à l'aide de HOST_NAME() » dans Filtres de lignes paramétrés.

La réplication offre quatre types de filtres :

  • Les filtres de lignes statiques, disponibles avec tous les types de réplication.
    À l'aide des filtres de lignes statiques, vous pouvez choisir un sous-ensemble de lignes à publier. Tous les abonnés à une publication filtrée reçoivent le même sous-ensemble de lignes pour la table filtrée. Pour plus d'informations, consultez la section « Filtres de lignes statiques » dans cette rubrique.
  • Les filtres de colonnes, disponibles avec tous les types de réplication.
    À l'aide des filtres de colonnes, vous pouvez choisir un sous-ensemble de colonnes à publier. Pour plus d'informations, consultez la section « Filtres de colonnes » dans cette rubrique.
  • Les filtres des lignes paramétrables, disponibles uniquement avec la réplication de fusion.
    À l'aide des filtres des lignes paramétrables, vous pouvez choisir un sous-ensemble de lignes à publier. Contrairement aux filtres statiques qui envoient le même sous-ensemble de lignes à chaque abonné, les filtres des lignes paramétrables se servent d'une valeur de données fournie par l'Abonné pour envoyer différents sous-ensembles de lignes aux abonnés. Pour plus d'informations, consultez Filtres de lignes paramétrés.
  • Les filtres de jointure, disponibles uniquement avec la réplication de fusion.
    À l'aide des filtres de jointure, vous pouvez étendre un filtre de lignes d'une table publiée à l'autre. Pour plus d'informations, consultez Filtres de jointure.

Filtres de lignes statiques

L'illustration suivante montre une table publiée filtrée pour que seules les lignes 2, 3 et 6 soient intégrées à la publication.

Filtrage de ligne

Un filtre de lignes statiques utilise une clause WHERE pour sélectionner les données appropriées à publier, c'est à vous de spécifier la dernière partie de la clause WHERE. Prenez la Table Product (AdventureWorks) de la base de données exemple Adventure Works contenant la colonne ProductLine. Pour publier uniquement les lignes comportant des données relatives aux vélos tout terrain, spécifiez ProductLine = 'M'.

Un filtre de lignes statiques a pour résultat un ensemble unique de données pour chaque publication. Dans l'exemple précédent, tous les abonnés doivent recevoir uniquement les lignes avec des données sur les produits relatifs aux vélos tout terrain. Si vous avez un autre abonné qui a également uniquement besoin des lignes avec des données relatives aux vélos tout terrain :

  • Avec la réplication de capture instantanée ou transactionnelle, vous pouvez créer une autre publication et inclure la table dans les deux publications (spécifiez ProductLine = 'R') dans la clause de filtre pour l'article de cette publication).
    ms151775.note(fr-fr,SQL.90).gifRemarque :
    Dans les publications transactionnelles, les filtres de lignes peuvent ajouter un surcroît de traitement considérable car la clause de filtrage d'articles est évaluée pour chaque ligne de journal écrite pour une table publiée afin de déterminer si la ligne doit être répliquée. Les filtres de lignes doivent être évités dans les publications transactionnelles si chaque nœud de réplication peut prendre en charge la charge complète des données, et si l'ensemble global des données est relativement peu volumineux.
  • Avec la réplication de fusion, utilisez le filtrage des lignes paramétrables plutôt que la création de plusieurs publications à l'aide des filtres de lignes statiques. Pour plus d'informations, consultez Filtres de lignes paramétrés.

Pour définir et modifier un filtre de lignes statiques

Filtres de colonnes

L'illustration suivante montre une publication qui filtre la colonne C :

Filtrage de colonne

Vous pouvez également combiner le filtrage de lignes et de colonnes, comme le montre l'illustration suivante.

Filtrage de ligne et de colonne

Après qu'une publication soit créée, vous pouvez utiliser le filtrage de colonnes pour supprimer une colonne d'une publication existante, mais la conserver dans la table sur le serveur de publication, et vous pouvez également inclure une colonne existante dans la publication. Pour les autres modifications, comme l'ajout d'une nouvelle colonne à une table puis à l'article publié, utilisez la réplication de modification de schéma. Pour plus d'informations, consultez les sections « Ajout de colonnes » et « Suppression de colonnes » dans la rubrique Modification du schéma dans les bases de données de publication.

Les types de colonnes listés dans la table suivante ne peuvent pas être filtrés de certains types de publications.

Type de colonne Type de publication et options

Colonne de clé primaire

Les colonnes de clé primaire sont requises pour toutes les tables des publications transactionnelles. Elles ne sont pas requises pour les tables des publications de fusion, mais si une colonne de clé primaire est présente, elle ne peut pas être filtrée.

Colonne de clé étrangère

Toutes les publications créées à l'aide de l'Assistant Nouvelle publication. Vous pouvez filtrer les colonnes de clé étrangère à l'aide des procédures stockées Transact-SQL. Pour plus d'informations, consultez How to: Define and Modify a Column Filter (Replication Transact-SQL Programming).

La colonne rowguid

Publications de fusion 1

La colonne msrepl_tran_version

Publications de capture instantanée ou publications transactionnelles qui autorisent les abonnements pouvant être mis à jour

Colonnes n'autorisant pas la valeur NULL et n'ayant pas de valeur par défaut ou n'ayant pas la propriété IDENTITY définie.

Publications de capture instantanée ou publications transactionnelles qui autorisent les abonnements pouvant être mis à jour

Colonnes avec contraintes ou index uniques

Publications de capture instantanée ou publications transactionnelles qui autorisent les abonnements pouvant être mis à jour

Toutes les colonnes d'une publication de fusion SQL Server 7.0

Il est impossible de filtrer les colonnes dans les publications de fusion SQL Server 7.0.

Horodateur

Publications de capture instantanée ou publications transactionnelles SQL Server 7.0 qui autorisent les abonnements pouvant être mis à jour

1 Si vous publiez une table dans une réplication de fusion et que cette table contient déjà une colonne de type de données uniqueidentifier avec la propriété ROWGUIDCOL définie, la réplication peut utiliser cette colonne au lieu de créer une colonne supplémentaire nommée rowguid. Dans ce cas, la colonne existante doit être publiée.

Pour définir ou modifier un filtre de colonnes

Règles de filtrage

Retenez les règles suivantes lors du filtrage de données :

  • Toutes les colonnes référencées dans les filtres de lignes doivent être intégrées à la publication. En d'autres termes, vous ne pouvez pas utiliser un filtre de colonnes pour exclure une colonne utilisée dans un filtre de lignes.
  • Si un filtre est ajouté ou modifié après l'initialisation des abonnements, ces derniers doivent être réinitialisés.
  • La taille maximale d'une colonne utilisée dans un filtre est de 1 024 octets pour un article d'une publication de fusion, et de 8 000 octets pour un article d'une publication transactionnelle.
  • Les colonnes avec les types de données suivants ne peuvent pas être référencées dans des filtres de lignes ou de jointure :
    • varchar(max) and nvarchar(max)
    • varbinary(max)
    • text and ntext
    • image
    • XML
    • UDT
  • La réplication transactionnelle vous permet de répliquer une vue indexée comme une vue ou une table. Si vous répliquez la vue comme une table, vous ne pouvez pas filtrer les colonnes de la table.

Voir aussi

Concepts

Publication de données et d'objets de base de données

Aide et Informations

Assistance sur SQL Server 2005