sp_repladdcolumn (Transact-SQL)

Ajoute une colonne à un article de table existant qui a été publié. Permet d'ajouter la nouvelle colonne à tous les serveurs de publication, ou à une publication spécifique, qui publient cette table. Cette procédure stockée est exécutée sur la base de données de publication du serveur de publication.

Important

Cette procédure stockée est déconseillée ; elle est essentiellement prise en charge pour des raisons de compatibilité descendante. Elle doit être utilisée seulement avec des serveurs de publication Microsoft SQL Server 2000 et des Abonnés de republication SQL Server 2000. Cette procédure ne doit pas être utilisée sur des colonnes avec des types de données qui ont été introduits dans SQL Server 2005 ou SQL Server 2008.

Icône Lien de rubrique Conventions de la syntaxe de Transact-SQL

Syntaxe

sp_repladdcolumn [ @source_object = ] 'source_object', [ @column = ] 'column' ]
    [ , [ @typetext = ] 'typetext' ]
    [ , [ @publication_to_add = ] 'publication_to_add' ]
    [ , [ @from_agent = ] from_agent ]
    [ , [ @schema_change_script = ] 'schema_change_script' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]

Arguments

  • [ @source\_object =] 'source_object'
    Nom de l'article de table contenant la nouvelle colonne à ajouter. source_object est de type nvarchar(358), sans valeur par défaut.

  • [ @column =] 'column'
    Nom de la colonne dans la table à ajouter pour la réplication. column est de type sysname et n'a pas de valeur par défaut.

  • [ @typetext =] 'typetext'
    Définition de la colonne ajoutée. typetext est de type nvarchar(3000) et n'a pas de valeur par défaut. Par exemple, si la colonne order_filled est ajoutée et qu'il s'agit d'un champ à un seul caractère, non NULL, et dont la valeur par défaut est N, order_filled est le paramètre column alors que la définition de la colonne char(1) NOT NULL CONSTRAINT constraint_name DEFAULT 'N' est la valeur du paramètre typetext.

  • [ @publication\_to\_add =] 'publication_to_add'
    Nom de la publication à laquelle la nouvelle colonne est ajoutée. publication_to_add est de type nvarchar(4000), avec ALL comme valeur par défaut. Avec la valeur ALL, toutes les publications contenant cette table sont affectées. Si publication_to_add est spécifié, seule cette publication contient la nouvelle colonne.

  • [ @from\_agent = ] from_agent
    Indique si la procédure stockée est exécutée par un agent de réplication. from_agent est de type int avec la valeur par défaut 0, sachant que la valeur 1 est utilisée lorsque cette procédure stockée est exécutée par un Agent de réplication ; dans tous les autres cas, la valeur par défaut 0 doit être utilisée.

  • [ @schema\_change\_script =] 'schema_change_script'
    Spécifie le nom et le chemin d'accès d'un script SQL Server utilisé pour modifier les procédures stockées personnalisées générées par le système. schema_change_script est de type nvarchar(4000), avec NULL comme valeur par défaut. La réplication permet aux procédures stockées personnalisées définies par l'utilisateur de remplacer une ou plusieurs procédures par défaut utilisées dans la réplication transactionnelle. schema_change_script est exécuté après une modification de schéma dans l'article de table répliqué à l'aide de sp_repladdcolumn, et peut être utilisé pour effectuer l'une des opérations suivantes :

    • Si les procédures stockées personnalisées sont automatiquement régénérées, schema_change_script peut être utilisé pour les supprimer et les remplacer par des procédures stockées personnalisées définies par l'utilisateur et qui prennent en charge le nouveau schéma.

    • Si les procédures stockées personnalisées ne sont pas régénérées automatiquement, schema_change_script peut être utilisé pour les régénérer ou pour créer des procédures stockées personnalisées définies par l'utilisateur.

  • [ @force\_invalidate\_snapshot = ] force_invalidate_snapshot
    Active ou désactive la possibilité d'invalider un instantané. force_invalidate_snapshot est de type bit, avec 1 comme valeur par défaut.

    1 spécifie que les modifications de l'article peuvent invalider l'instantané et dans ce cas, la valeur 1 autorise la réalisation du nouvel instantané.

    0 spécifie que les modifications de l'article n'invalident pas l'instantané.

  • [ @force\_reinit\_subscription = ] force_reinit_subscription
    Active ou désactive la possibilité de réinitialiser l'abonnement. force_reinit_subscription est de type bit, avec 0 comme valeur par défaut.

    0 indique que les modifications apportées à l'article ne doivent pas provoquer la réinitialisation de l'abonnement.

    1 spécifie que les modifications de l'article peuvent provoquer la réinitialisation de l'abonnement et dans ce cas, la valeur 1 autorise cette réinitialisation.

Valeurs des codes de retour

0 (succès) ou 1 (échec)

Notes

sp_repladdcolumn est déconseillée et est fournie seulement pour des raisons de compatibilité descendante. L'ajout d'une colonne à un article de table répliqué doit être effectué en exécutant des commandes DDL (Data Definition Language) sur la table publiée. La réplication réplique automatiquement ces commandes DDL dès lors que la réplication DDL est activée. Pour plus d'informations, consultez Modifier le schéma dans les bases de données de publication.

sp_repladdcolumn est toujours nécessaire lors de la propagation des modifications DDL depuis les Abonnés de republication qui s'exécutent sur une version antérieure des Abonnés SQL Server 2000.

sp_repladdcolumn est utilisée pour tous les types de réplications.

Si vous utilisez sp_repladdcolumn et qu'une modification de schéma est apportée à un article qui appartient à une publication qui utilise un package DTS (Data Transformation Services), la modification de schéma n'est pas propagée vers l'Abonné, et les procédures personnalisées pour INSERT/UPDATE/DELETE ne sont pas régénérées sur les Abonnés. L'utilisateur doit régénérer le package DTS manuellement et faire la modification de schéma correspondante au niveau des Abonnés. Si la mise à jour du schéma n'est pas appliquée, il est possible que l'Agent de distribution ne puisse pas appliquer les modifications suivantes. Avant d'effectuer une modification de schéma, vérifiez qu'aucune transaction en attente ne doit être diffusée.

Lorsque typetext reçoit une valeur par défaut qui n'est pas une fonction déterministe (par exemple, 'datetime not null default getdate()'), une non-convergence peut se produire après l'ajout de la colonne, car la fonction est exécutée au niveau de l'abonné pour charger une valeur par défaut dans la colonne.

Les colonnes d'horodateur et les colonnes calculées sont filtrées pour rechercher les publications en mode caractère. Si vous ajoutez une colonne d'horodateur ou une colonne calculée avec sp_repladdcolumn, les abonnements à ces publications ne reçoivent pas cette nouvelle colonne.

Important

Vous devez sauvegarder la base de données de publication après l'exécution de sp_repladdcolumn, car sans cela, une opération de fusion peut échouer après la restauration de la base de données de publication.

Autorisations

Seuls les membres appartenant au rôle serveur fixe sysadmin et au rôle de base de données fixe db_owner peuvent exécuter sp_repladdcolumn.

Voir aussi

Référence

Procédures stockées système (Transact-SQL)

Concepts

Fonctionnalités déconseillées dans la réplication SQL Server