Partager via


Gérer les 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 pour éviter l’affectation de la même valeur d’identité à la fois sur l’Abonné et sur le serveur de publication. La réplication peut gérer automatiquement les plages d’identités ou vous pouvez choisir de gérer manuellement la gestion des plages d’identité. Pour plus d’informations sur les options de gestion des plages d’identité fournies par la réplication, consultez Répliquer les 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 deux publications. Pour plus d’informations, consultez « Publication de tables dans plusieurs publications » dans Publier des données et des objets de base de données.

  • Pour créer un numéro d’incrémentation automatique qui peut être utilisé dans plusieurs tables ou qui peut être appelé à partir d’applications sans référencer une table, consultez Numéros de séquence.

Utilisation de SQL Server Management Studio

Spécifiez une option de gestion de la colonne d’identité sous l’onglet Propriétés de la boîte de dialogue Propriétés de l’article -< Article> de l’Assistant de nouvelle publication. Pour plus d’informations sur l’utilisation de cet Assistant, consultez Créer une publication. Dans l’Assistant de Nouvelle Publication :

  • Si vous sélectionnez Fusionner la publication ou la publication transactionnelle avec la mise à jour des abonnements sur la page Type de publication , sélectionnez la gestion automatique ou manuelle des plages d’identités (automatique, la valeur par défaut est recommandée). Une fois la table publiée, la propriété ne peut pas être modifiée, mais d’autres propriétés associées peuvent être modifiées.

  • Si vous sélectionnez d’autres types de publication, la gestion des plages d’identité doit être définie sur manuelle.

Modifiez les plages d’identités 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 de publication.

Pour spécifier une option de gestion des colonnes d’identité

  1. 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 des abonnements à jour.

  2. Dans la page Articles , sélectionnez une table avec une colonne d’identité.

  3. Cliquez sur Propriétés de l'article, puis sur Définir les propriétés de l'article de la table sélectionnée.

  4. 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 Manuel (pour les éditeurs exécutant SQL Server 2005 ou version ultérieure) ou Vrai ou Faux (pour les éditeurs exécutant une version de SQL Server antérieure à SQL Server 2005).

  5. Si vous avez sélectionné Automatique ou True à l’étape 4, entrez les valeurs des options du tableau suivant. Pour plus d'informations sur l'utilisation de ces paramètres, consultez la section « Affectation de plages d’identités » de Replicate Identity Columns.

    Choix Valeur Descriptif
    Taille de la plage d'éditeurs Valeur entière pour la taille de plage (par exemple, 20000). Consultez la section « Affectation de plages d’identités » de Répliquer les colonnes d'identité.
    Taille de plage d’abonnés Valeur entière pour la taille de plage (par exemple, 1 0000). Consultez la section « Affectation de plages d’identités » de Répliquer les colonnes d'identité.
    Pourcentage de seuil de plage Valeur entière pour le seuil de pourcentage (par exemple, 90 est équivalente à 90 %). Pourcentage des valeurs d’identité totales utilisées sur un nœud avant l’affectation d’une nouvelle plage d’identités.

    Remarque : cette valeur doit être spécifiée, mais elle est utilisée uniquement par les Abonnés utilisant des abonnements mis à jour en file d’attente ; et abonnés pour fusionner des publications exécutant 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 la réplication des colonnes d’identité.
    Valeur de départ de plage suivante Valeur entière. Lecture seule. Valeur à laquelle la plage suivante démarre. Par exemple, si la plage actuelle est 5001-6000, cette valeur est 6001.
    Valeur d’identité maximale Valeur entière. Lecture seule. Valeur la plus élevée pour la colonne d’identité. Déterminé par le type de données de base de la colonne.
    Incrément Valeur entière. Lecture seule. Montant par lequel le nombre de la colonne d’identité doit augmenter ou diminuer pour chaque insertion : généralement défini sur 1.
  6. Cliquez sur OK.

Pour modifier les plages d’identités et les seuils après la publication d’une table

  1. Dans la page Articles de la boîte de dialogue Propriétés de publication - <Publication> , sélectionnez une table avec une colonne d’identité.

  2. Cliquez sur Propriétés de l'article, puis sur Définir les propriétés de l'article de la table sélectionnée.

  3. 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 de serveur de publication, taille de la plage d’abonnés et pourcentage de seuil de plage.

  4. Cliquez sur OK.

  5. Cliquez sur OK dans la boîte de dialogue Propriétés de 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é lorsqu’un article est créé.

Pour activer la gestion automatique des plages d’identités lors de la définition d’articles pour une publication transactionnelle

  1. Sur le serveur de publication de la base de données, exécutez sp_addarticle. Si la table source publiée comporte une colonne d’identité, spécifiez une valeur automatique 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é ne 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 d’identités attribuée à tous les Abonnés.

Pour désactiver la gestion automatique des plages d’identités lors de la définition d’articles pour une publication transactionnelle

  1. Sur le serveur de publication, dans la base de données de publication, exécutez sp_addarticle. Spécifiez une valeur de manual pour @identityrangemanagementoption. Pour plus d’informations sur la définition d’articles, consultez Définir un article.

  2. Affectez des plages aux colonnes d'identité d'article chez 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 sur l’affectation de plages pour la gestion manuelle des plages d’identités dans la rubrique Répliquer les colonnes d’identité.

Pour activer la gestion automatique des plages d’identités lors de la définition d’articles pour une publication de fusion

  1. Sur le serveur de publication sur la base de données de publication, exécutez sp_addmergearticle. Si la table source publiée comporte une colonne d’identité, spécifiez une valeur automatique pour @identityrangemanagementoption, la plage de valeurs d’identité attribuées à un abonnement serveur pour @pub_identity_range, la plage de valeurs d’identité attribuées au serveur de publication et chaque abonnement client 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 l’affectation de nouvelles plages d’identités, consultez Affectation de plages d’identités dans la rubrique Répliquer les colonnes d’identité. Pour plus d’informations sur la définition d’articles, consultez Définir un article.

    Remarque

    Assurez-vous que le type de données de la colonne d’identité est suffisamment grand pour prendre en charge la plage totale d’identités attribuées à tous les Abonnés, en particulier pour les Abonnés disposant d’abonnements serveur.

Pour désactiver la gestion automatique des plages d’identités lors de la définition d’articles pour une publication de fusion

  1. Sur le serveur de publication sur la base de données 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 Publisher ne seront pas définies en tant que colonnes d’identité sur le Subscriber.

    Pour plus d’informations sur la définition d’articles, consultez Définir un article.

  2. Attribuez des plages aux colonnes d'articles d'identité chez l'Abonné pour éviter de générer des conflits lors de la mise à jour des données des Abonnés.

Pour modifier les paramètres de gestion automatique des plages d'identité pour un article existant dans une publication d’instantané ou transactionnelle.

  1. Sur le serveur de publication sur la base de données de publication, exécutez sp_helparticle et notez la valeur de identityrangemanagementoption dans l'ensemble des résultats. Si cette valeur est 0, la gestion automatique des plages d’identités n’est pas activée.

  2. Si la valeur de identityrangemanagementoption dans le jeu de résultats est 1, modifiez les paramètres comme suit :

    • Pour modifier les plages d’identités affectées, exécutez sp_changearticle sur le serveur de publication sur la base de données de publication. Spécifiez une valeur de identity_range ou de pub_identity_range pour @property et la nouvelle valeur de plage pour @value.

    • Pour modifier le seuil auquel de nouvelles plages sont affectées, exécutez sp_changearticle sur la base de données de publication au niveau du serveur 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és pour un article existant dans une publication de fusion

  1. Sur le serveur de publication sur la base de données 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és n’est pas activée.

  2. Si la valeur de identity_support dans le jeu de résultats est 1, modifiez les paramètres comme suit :

    • Pour modifier les plages d’identité attribuées, exécutez sp_changemergearticle au niveau du serveur de publication dans la base de données de publication. Spécifiez une valeur de identity_range ou de pub_identity_range pour @property et la nouvelle valeur de plage pour @value.

    • Pour modifier le seuil auquel de nouvelles plages sont attribuées, exécutez sp_changemergearticle à partir 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és, consultez Affectation de plages d’identités dans la rubrique Répliquer les colonnes d’identité.

    • Pour désactiver la gestion automatique des plages d’identités, exécutez sp_changemergearticle à partir du serveur de publication dans la base de données de publication. Spécifiez une valeur de identityrangemanagementoption à @property et soit manuelle soit aucune pour @value.

Voir aussi

Réplication transactionnelle d’égal à égal
Concepts liés aux procédures stockées système de réplication
Répliquer des colonnes d’identité