Partager via


Régénération de procédures transactionnelles personnalisées pour refléter des modifications de schéma

Par défaut, la réplication transactionnelle effectue toutes les modifications de données sur l'Abonné via des procédures stockées qui sont générées par des procédures internes pour chaque article de table de la publication. Les trois procédures (une pour les insertions, une pour les mises à jour et une pour les suppressions) sont copiées vers l'Abonné et s'exécutent quand une insertion, une mise à jour ou une suppression est répliquée vers l'Abonné. Quand une modification de schéma est apportée à une table sur un serveur de publication SQL Server, la réplication régénère automatiquement ces procédures en appelant le même ensemble de procédures de script internes, de façon à ce que les nouvelles procédures correspondent au nouveau schéma (la réplication de modifications de schéma n'est pas prise en charge pour les serveurs de publication Oracle).

Il est également possible de spécifier des procédures personnalisées pour remplacer une ou plusieurs des procédures par défaut. Les procédures personnalisées doivent être modifiées si la modification de schéma affecte la procédure. Par exemple, si une procédure référence une colonne qui est supprimée dans une modification de schéma, les références à la colonne doivent être supprimées de la procédure. Il y a deux façons pour la réplication de propager une nouvelle procédure personnalisée vers les Abonnés :

  • La première option consiste à utiliser une procédure de script personnalisée pour remplacer les procédures par défaut utilisées par la réplication :

    1. Lors de l'exécution de la sp_addarticle (Transact-SQL), assurez-vous que le bit 0x02 de @schema_option a la valeur true.

    2. Exécutez sp_register_custom_scripting (Transact-SQL) et spécifiez la valeur 'insert', 'update' ou 'delete' pour le paramètre @type et le nom de la procédure de script personnalisée pour le paramètre @value.

    La prochaine fois qu'une modification de schéma est effectuée, la réplication appelle cette procédure stockée pour générer le script de la définition de la nouvelle procédure stockée personnalisée définie par l'utilisateur, puis propage la procédure à chaque Abonné.

  • La deuxième option consiste à utiliser un script qui contient une nouvelle définition de procédure personnalisée :

    1. Lors de l'exécution de sp_addarticle (Transact-SQL), définissez le bit 0x02 de @schema_option à False, de façon à ce que la réplication ne génère pas automatiquement des procédures personnalisées sur l'Abonné.

    2. Avant chaque modification de schéma, créez un nouveau fichier de script et inscrivez le script avec la réplication en exécutant sp_register_custom_scripting (Transact-SQL). Spécifiez la valeur 'custom_script' pour le paramètre @type et le chemin d'accès au script sur le serveur de publication pour le paramètre @value.

    Le prochaine fois qu'une modification de schéma pertinente est effectuée, ce script s'exécutera sur chaque Abonné au sein de la même transaction que la commande DDL. Quand la modification de schéma est effectuée, le script est désinscrit. Vous devez réinscrire le script pour qu'il soit exécuté après une modification de schéma ultérieure.