Procédure : définir et modifier un filtre de jointure entre des articles de fusion (SQL Server Management Studio)
Définissez, modifiez et supprimez des filtres de jointure sur la page Filtrer les lignes de la table de l'Assistant Nouvelle publication ou sur la page Filtrer les lignes de la boîte de dialogue Propriétés de la publication - <publication>. Pour plus d'informations sur l'utilisation de cet Assistant et sur l'accès à cette boîte de dialogue, consultez Procédure : créer une publication et définir des articles (SQL Server Management Studio) et Procédure : Affichage et modification des propriétés de l'article et de la publication (SQL Server Management Studio).
Notes
Si vous ajoutez, modifiez ou supprimez un filtre de jointure dans la boîte de dialogue Propriétés de la publication - <publication> après que les abonnements à la publication aient été initialisés, vous devez générer une nouvelle capture instantanée et réinitialiser tous les abonnements après avoir effectué la modification. Pour plus d'informations sur les conditions requises pour les modifications des propriétés, consultez Modification des propriétés des publications et des articles.
Les filtres de jointure peuvent être créés manuellement pour un ensemble de tables, ou bien la réplication peut générer les filtres automatiquement sur la base des relations entre les clés étrangères et les clés primaires définies sur les tables. Pour plus d'informations sur la génération automatique d'un ensemble de filtres de jointure, consultez Procédure : générer automatiquement un ensemble de filtres de jointure entre des articles de fusion (SQL Server Management Studio).
Pour définir un filtre de jointure
Sur la page Filtrer les lignes de la table de l'Assistant Nouvelle publication ou sur la page Filtrer les lignes de la boîte de dialogue Propriétés de la publication - <publication>, sélectionnez un filtre de lignes ou un filtre de jointure existant dans le volet Tables filtrées.
Notes
Pour qu'il soit possible de créer un filtre de jointure, la publication doit contenir au minimum deux tables associées. Un filtre de jointure permet d'étendre un filtre de lignes : vous devez donc définir un filtre de lignes sur une table pour pouvoir étendre le filtre à une autre table avec une jointure. Après avoir défini un filtre de jointure, vous pouvez l'étendre avec un autre filtre de jointure si la publication contient des tables associées supplémentaires.
Cliquez sur Ajouter, puis sur Ajouter une jointure pour étendre le filtre sélectionné.
Créez l'instruction de jointure : sélectionnez Utiliser le générateur pour créer l'instruction ou Créer manuellement l'instruction de jointure.
Si vous choisissez d'utiliser le générateur, utilisez les colonnes de la grille (Conjonction, Colonne de table filtrée, Opérateur et Colonne de table jointe) pour créer une instruction de jointure.
Chaque colonne de la grille contient une zone de liste déroulante qui vous permet de sélectionner deux colonnes et un opérateur (=, <>, <=, <, >=, >, et like). Les résultats sont affichés dans la zone de texte Aperçu. Si la jointure concerne plus d'une paire de colonnes, sélectionnez une conjonction (AND ou OR) dans la colonne Conjonction, et entrez deux autres colonnes et un opérateur.
Si vous choisissez d'écrire l'instruction manuellement, écrivez l'instruction de jointure dans la zone de texte Instruction de jointure. Utilisez la zone de liste Colonnes de table filtrée et la zone de liste Colonnes de table jointe pour faire glisser et déposer des colonnes dans la zone de texte Instruction de jointure.
L'instruction de jointure complète est par exemple celle-ci :
SELECT <published_columns> FROM [Sales].[SalesOrderHeader] INNER JOIN [Sales].[SalesOrderDetail] ON [SalesOrderHeader].[SalesOrderID] = [SalesOrderDetail].[SalesOrderID]
La clause JOIN doit utiliser un nommage en deux parties ; les nommages en trois et en quatre parties ne sont pas pris en charge.
Spécifiez les options de jointure :
Si la colonne sur laquelle vous effectuez la jointure dans la table filtrée (la table parente) est unique, sélectionnez Clé unique.
Attention La sélection de cette option indique que la relation entre les tables enfants et parent dans un filtre de jointure est « un à un » ou « un à plusieurs ». Sélectionnez cette option seulement si vous avez une contrainte sur la colonne de jointure dans la table enfant qui garantit l'unicité. Si cette option est définie incorrectement, il peut se produire une non-convergence des données.
Par défaut, la réplication de fusion traite les modifications sur une base ligne par ligne lors de la synchronisation. Pour que les modifications dans les lignes de la table filtrée et de la table jointe soient traitées comme une unité, sélectionnez Enregistrement logique (Microsoft SQL Server 2005 et ses versions ultérieures seulement). Cette option est disponible seulement si les conditions requises par l'article et par la publication pour l'utilisation des enregistrements logiques sont satisfaites. Pour plus d'informations, consultez la section « Considérations sur l'utilisation des enregistrements logiques » dans la rubrique Regroupements des modifications apportées à des lignes connexes à l'aide d'enregistrements logiques.
Cliquez sur OK.
Si vous êtes dans la boîte de dialogue Propriétés de la publication - <publication>, cliquez sur OK pour enregistrer et fermer la boîte de dialogue.
Pour modifier un filtre de jointure
Sur la page Filtrer les lignes de la table de l'Assistant Nouvelle publication ou sur la page Filtrer les lignes de la boîte de dialogue Propriétés de la publication - <publication>, sélectionnez un filtre dans le volet Tables filtrées, puis cliquez sur Modifier.
Dans la boîte de dialogue Modifier une jointure, modifiez le filtre.
Cliquez sur OK.
Pour supprimer un filtre de jointure
- Sur la page Filtrer les lignes de la table de l'Assistant Nouvelle publication ou sur la page Filtrer les lignes de la boîte de dialogue Propriétés de la publication - <publication>, sélectionnez un filtre dans le volet Tables filtrées, puis cliquez sur Supprimer. Si le filtre de jointure que vous supprimez est lui-même étendu par d'autres jointures, ces jointures seront aussi supprimées.
Voir aussi