Procédure : gérer des colonnes d'identité (programmation Transact-SQL de la réplication)

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. 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 plus d'informations sur les options de gestion des plages d'identité fournies par la réplication, consultez Réplication de colonnes d'identité.

Notes

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 Publication de données et d'objets de base de données.

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 Procédure : définir un article (programmation Transact-SQL de la réplication).

    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

  1. 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 Procédure : définir un article (programmation Transact-SQL de la réplication).

  2. 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éplication de 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éplication de colonnes d'identité. Pour plus d'informations sur la définition d'articles, consultez Procédure : définir un article (programmation Transact-SQL de la réplication).

    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

  1. 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 Procédure : définir un article (programmation Transact-SQL de la réplication).

  2. 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 de capture instantanée

  1. 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.

  2. 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

  1. 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.

  2. 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éplication de 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.