Gérer des colonnes d’identité
S’applique à : SQL Server Azure SQL Managed Instance
Cette rubrique décrit comment gérer les colonnes d'identité dans SQL Server en utilisant SQL Server Management Studio ou 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é.
Dans cette rubrique
Avant de commencer :
Pour gérer des colonnes d'identité à l'aide de :
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 seuils et les plages d’identité sous l’onglet Propriétés de la page Propriétés de l’article - <Article>, qui se trouve 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 l'éditeur utilise une version de SQL Server antérieure à SQL Server 2005 (9.x), sur la page Type de publication de l'assistant de nouvelle publication, sélectionnez Fusionner Publication ou Publication transactionnelle avec mise à jour des abonnements.
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é, définissez la propriété Gérer automatiquement les plages d’identité sur Automatique ou Manuelle (pour les serveurs de publication exécutant SQL Server 2005 (9.x) or later) ou plus), ou sur True ou False (pour les serveurs de publication exécutant une version de SQL Server antérieure à SQL Server 2005 (9.x)).
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 n’est utilisée que 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 présentant 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é, entrez des valeurs pour une ou plusieurs des propriétés suivantes : Taille de la plage sur le serveur de publication, Taille de la plage sur l’Abonné et Pourcentage du seuil de plage.
Cliquez sur OK.
Dans la boîte de dialogue Propriétés de la publication - <Publication>, cliquez sur OK.
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 qui est publiée contient une colonne d'identité, affectez la valeur auto à @identityrangemanagementoption, spécifiez la plage de valeurs d'identité affectée au serveur de publication pour @pub_identity_range, la plage de valeurs d'identité affectée à chaque Abonné pour @identity_rangeet le pourcentage des valeurs d'identité totales utilisé avant qu'une nouvelle plage d'identité soit affectée pour @threshold. Pour plus d’informations sur la définition d’articles, consultez Définir un article.
Remarque
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. Affectez la valeur manual à @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 qui est publiée contient une colonne d'identité, affectez la valeur auto à @identityrangemanagementoption, spécifiez la plage de valeurs d'identité affectée à un abonnement serveur pour @pub_identity_range, la plage de valeurs d'identité affectée au serveur de publication et à chaque abonnement client pour @identity_rangeet le pourcentage des valeurs d'identité totales utilisé avant qu'une nouvelle plage d'identité 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.
Remarque
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. Affectez l'une des valeurs suivantes à @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. Affectez la valeur identity_range ou pub_identity_range à @property et spécifiez la nouvelle valeur de la 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. Affectez la valeur threshold à @property et spécifiez 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. Affectez la valeur identity_range ou pub_identity_range à @property et spécifiez la nouvelle valeur de la 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. Affectez la valeur threshold à @property et spécifiez 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. Affectez la valeur identityrangemanagementoption à @property et la valeur manual ou none à @value.