Gérer des colonnes d'identité
Cette rubrique explique comment gérer les colonnes d’identité dans SQL Server 2014 à l’aide de SQL Server Management Studio ou de Transact-SQL. Lorsque les insertions de l'Abonné sont répliquées sur le serveur de publication, les colonnes d'identité doivent être gérées afin d'éviter d'affecter la même valeur d'identité sur l'Abonné et sur le serveur de publication. La réplication peut gérer automatiquement les plages d'identité ou vous pouvez choisir de les gérer manuellement. Pour plus d’informations sur les options de gestion des plages d’identité fournies par la réplication, consultez Répliquer des colonnes d’identité.
Avant de commencer
Recommandations
Lors de la publication d'une table dans plusieurs publications, vous devez spécifier les mêmes options de gestion des plages d'identité pour les différentes publications. Pour plus d’informations, consultez « Publication de tables dans plusieurs publications » dans la rubrique Publier des données et des objets de base de données.
Pour créer un numéro à incrémentation automatique qui peut être utilisé dans plusieurs tables ou être appelé par des applications sans faire référence à une table, consultez Numéros de séquence.
Utilisation de SQL Server Management Studio
Spécifiez une option de gestion des colonnes d’identité sous l’onglet Propriétés de la boîte de dialogue Propriétés de l’article -<Article> de l’Assistant Nouvelle publication. Pour plus d’informations sur l’utilisation de cet Assistant, consultez Créer une publication. Dans l'Assistant Nouvelle publication :
Si vous sélectionnez Publication de fusion ou Publication transactionnelle avec abonnements pouvant être mis à jour dans la page Type de publication , sélectionnez une gestion des plages d'identité automatique ou manuelle (l'option par défaut, automatique, est recommandée). Après la publication de la table, la propriété ne peut plus être modifiée mais d'autres propriétés liées peuvent l'être.
Si vous sélectionnez d'autres types de publication, vous devez définir une gestion manuelle des plages d'identité.
Modifiez les plages d’identité et les seuils sous l’onglet Propriétés de l’article -< Article>, qui est disponible dans la boîte de dialogue Propriétés de la publication - <Publication> . Pour plus d'informations sur l'accès à cette boîte de dialogue, consultez Afficher et modifier les propriétés d’un serveur de publication.
Pour spécifier une option de gestion de colonnes d'identité
Si le serveur de publication exécute une version de SQL Server antérieure à SQL Server 2005, dans la page Type de publication de l’Assistant Nouvelle publication, sélectionnez Fusionner la publication ou Publication transactionnelle avec abonnements de mise à jour.
Dans la page Articles , sélectionnez une table avec une colonne d'identité.
Cliquez sur Propriétés de l'articlepuis sur Définir les propriétés de l'article de la table en surbrillance.
Sous l’onglet Propriétés de la boîte de dialogue Propriétés de l’article - <Article>, dans la section Gestion des plages d’identités, définissez la propriété Gérer automatiquement les plages d’identité sur Automatique ou Manuel (pour les serveurs de publication exécutant SQL Server 2005 ou version ultérieure) ou True ou False (pour les serveurs de publication exécutant une version de SQL Server avant SQL Server 2005).
Si vous avez sélectionné la valeur Automatique ou Vrai dans l'étape 4, entrez des valeurs pour les options du tableau suivant. Pour plus d’informations sur l’utilisation de ces paramètres, consultez la section « Affectation de plages d’identité » de Répliquer des colonnes d’identité.
Option Valeur Description Taille de la plage sur le serveur de publication Valeur entière représentant la taille de la plage (par exemple, 20000). Consultez la section « Affectation de plages d’identité » de Répliquer des colonnes d’identité. Taille de la plage sur l'Abonné Valeur entière représentant la taille de la plage (par exemple, 10000). Consultez la section « Affectation de plages d’identité » de Répliquer des colonnes d’identité. Pourcentage du seuil de plage Valeur entière représentant le pourcentage du seuil (par exemple, 90 signifie 90 %) Pourcentage représentant le nombre total de valeurs d'identité utilisées sur un nœud avant d'affecter une nouvelle plage d'identité.
Remarque : Cette valeur doit être spécifiée mais elle est uniquement utilisée par : les Abonnés utilisant des abonnements mis à jour en attente et les Abonnés aux publications de fusion qui exécutent SQL Server Compact ou des versions antérieures d’autres éditions de SQL Server. Pour plus d’informations, consultez la section « Affectation de plages d’identité » de Répliquer des colonnes d’identité.Valeur de départ de la prochaine plage Valeur de type entier. Lecture seule. Valeur de départ de la prochaine plage. Si, par exemple, la plage actuelle va de 5001 à 6000, il s'agira de la valeur 6001. Valeur d'identité maximale Valeur de type entier. Lecture seule. Valeur maximale de la colonne identité. Déterminée par le type de données de base de la colonne. Incrément Valeur de type entier. Lecture seule. Valeur utilisée pour augmenter ou diminuer le nombre de la colonne d'identité à chaque insertion : en règle générale définie à 1. Cliquez sur OK.
Pour modifier les seuils et les plages d'identité après la publication d'une table
Dans la page Articles de la boîte de dialogue Propriétés de la publication - <Publication> , sélectionnez une table avec une colonne d’identité.
Cliquez sur Propriétés de l'articlepuis sur Définir les propriétés de l'article de la table en surbrillance.
Sous l’onglet Propriétés de la boîte de dialogue Propriétés de l’article - <Article> , dans la section Gestion des plages d’identités , entrez des valeurs pour une ou plusieurs des propriétés suivantes : Taille de la plage du serveur de publication, Taille de la plage de l’abonné et Pourcentage de seuil de plage.
Cliquez sur OK.
Cliquez sur OK dans la boîte de dialogue Propriétés de la publication - <Publication> .
Utilisation de Transact-SQL
Vous pouvez utiliser des procédures stockées de réplication pour spécifier les options de gestion des plages d'identité lors de la création d'un article.
Pour activer la gestion automatique des plages d'identité lors de la définition d'articles pour une publication transactionnelle
Exécutez sp_addarticlesur la base de données de publication du serveur de publication. Si la table source publiée comporte une colonne d’identité, spécifiez la valeur auto pour @identityrangemanagementoption, la plage de valeurs d’identité attribuées au serveur de publication pour @pub_identity_range, la plage de valeurs d’identité attribuées à chaque Abonné pour @identity_range et le pourcentage de valeurs d’identité totales utilisées avant qu’une nouvelle plage d’identités soit affectée pour @threshold. Pour plus d’informations sur la définition d’articles, consultez Définir un article.
Notes
Vérifiez que le type de données de la colonne d'identité est suffisamment grand pour prendre en charge la plage totale des identités affectées à l'ensemble des Abonnés.
Pour désactiver la gestion automatique des plages d'identité lors de la définition d'articles pour une publication transactionnelle
Exécutez sp_addarticlesur la base de données de publication du serveur de publication. Spécifiez la valeur manual pour @identityrangemanagementoption. Pour plus d’informations sur la définition d’articles, consultez Définir un article.
Affectez des plages aux colonnes d'identité d'article sur l'Abonné pour éviter de générer des conflits lors de la mise à jour des Abonnés. Pour plus d’informations, consultez la section relative à l’affectation de plages pour la gestion manuelle de plages d’identité dans la rubrique Répliquer des colonnes d’identité.
Pour activer la gestion automatique des plages d'identité lors de la définition d'articles pour une publication de fusion
Dans la base de données de publication sur le serveur de publication, exécutez sp_addmergearticle. Si la table source publiée contient une colonne d’identité, spécifiez la valeur auto pour @identityrangemanagementoption, la plage de valeurs d’identité attribuées à un abonnement serveur pour @pub_identity_range, la plage de valeurs d’identité affectées au serveur de publication et à chaque abonnement client pour @identity_range, ainsi que le pourcentage de valeurs d’identité totales utilisées avant qu’une nouvelle plage d’identités soit affectée pour @threshold. Pour plus d’informations sur l’affectation de nouvelles plages d’identité, consultez la section « Attribution de plages d’identité » de la rubrique Répliquer des colonnes d’identité. Pour plus d’informations sur la définition d’articles, consultez Définir un article.
Notes
Vérifiez que le type de données de la colonne d'identité est suffisamment grand pour prendre en charge la plage totale des identités qui sont assignées à l'ensemble des Abonnés, en particulier pour les Abonnés avec des abonnements serveur.
Pour désactiver la gestion automatique des plages d'identité lors de la définition d'articles pour une publication de fusion
Dans la base de données de publication sur le serveur de publication, exécutez sp_addmergearticle. Spécifiez l’une des valeurs suivantes pour @identityrangemanagementoption :
manuel - les plages d'identité doivent être affectées manuellement pour la mise à jour des Abonnés.
none - les colonnes d'identité sur le serveur de publication ne seront pas définies en tant que colonnes d'identité sur l'Abonné.
Pour plus d’informations sur la définition d’articles, consultez Définir un article.
Affectez des plages aux colonnes d'identité d'article sur l'Abonné pour éviter de générer des conflits lors de la mise à jour des Abonnés.
Pour modifier les paramètres de gestion automatique des plages d'identité pour un article existant dans une publication transactionnelle ou d'instantané
Dans la base de données de publication sur le serveur de publication, exécutez sp_helparticle et notez la valeur de identityrangemanagementoption dans le jeu de résultats. Si cette valeur est 0, la gestion automatique des plages d'identité n'est pas activée.
Si la valeur de identityrangemanagementoption dans le jeu de résultats est 1, modifiez les paramètres suivants :
Pour modifier les plages d'identité affectées, exécutez sp_changearticle au niveau du serveur de publication dans la base de données de publication. Spécifiez la valeur identity_range ou pub_identity_range pour @property et la nouvelle valeur de plage pour @value.
Pour modifier le seuil d'affectation de nouvelles plages, exécutez sp_changearticle au niveau du serveur de publication dans la base de données de publication. Spécifiez une valeur de seuil pour @property et la nouvelle valeur de seuil pour @value.
Pour modifier les paramètres de gestion automatique des plages d'identité pour un article existant dans une publication de fusion
Dans la base de données de publication sur le serveur de publication, exécutez sp_helpmergearticle et notez la valeur de identity_support dans le jeu de résultats. Si cette valeur est 0, la gestion automatique des plages d'identité n'est pas activée.
Si la valeur de identity_support dans le jeu de résultats est 1, modifiez les paramètres suivants :
Pour modifier les plages d'identité affectées, exécutez sp_changemergearticle au niveau du serveur de publication dans la base de données de publication. Spécifiez la valeur identity_range ou pub_identity_range pour @property et la nouvelle valeur de plage pour @value.
Pour modifier le seuil d'affectation de nouvelles plages, exécutez sp_changemergearticle au niveau du serveur de publication dans la base de données de publication. Spécifiez une valeur de seuil pour @property et la nouvelle valeur de seuil pour @value. Pour plus d’informations sur l’affectation de nouvelles plages d’identité, consultez la section « Attribution de plages d’identité » de la rubrique Répliquer des colonnes d’identité.
Pour désactiver la gestion automatique des plages d'identité, exécutez sp_changemergearticle au niveau du serveur de publication dans la base de données de publication. Spécifiez la valeur identityrangemanagementoption pour @property et manuelle ou aucun pour @value.
Voir aussi
Peer-to-Peer Transactional Replication
Replication System Stored Procedures Concepts
Répliquer des colonnes d’identité