Gérer des colonnes d'identité
Cette rubrique explique comment gérer des colonnes d'identité dans SQL Server 2012 à l'aide de 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 :
Recommandations
Pour gérer des colonnes d'identité à l'aide de :
SQL Server Management Studio
Transact-SQL
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 la section « Publication de tables dans plusieurs publications » de 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.
[Top]
Utilisation de SQL Server Management Studio
Spécifiez une option de gestion de colonnes d'identité dans 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 dans l'onglet Propriétés de Propriétés de l'article - <Article> de 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'une 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 Publication de fusion ou Publication transactionnelle avec abonnements mis à jour.
Dans la page Articles, sélectionnez une table avec une colonne d'identité.
Cliquez sur Propriétés de l'article puis 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é, affectez à la propriété Gérer automatiquement les plages d'identité la valeur Automatique ou Manuelle (pour les serveurs de publication exécutant SQL Server 2005 ou une version ultérieure) ou la valeur True ou False (pour les serveurs de publication exécutant une version de SQL Server antérieure à SQL Server 2005).
Si vous avez sélectionnez 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. En 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. En 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. En 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'article puis sur Définir les propriétés de l'article de la table en surbrillance.
Dans 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.
Cliquez sur OK dans la boîte de dialogue Propriétés de la publication - <Publication>.
[Top]
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
Dans la base de données de publication sur le serveur de publication, exécutez sp_addarticle. 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_range et 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
Dans la base de données de publication sur le serveur de publication, exécutez sp_addarticle. 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 des 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_range et 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é » dans 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.
[Top]
Voir aussi
Concepts
Réplication transactionnelle d'égal à égal
Concepts liés aux procédures stockées système de réplication