Partager via


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 a été désapprouvée et n'est prise en charge que pour des raisons de compatibilité descendante. Elle ne doit être utilisée qu'avec des serveur de publication MicrosoftSQL 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 rubriqueConventions 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. L'argument source_object est de type nvarchar(358 et n'a pas de valeur par défaut.

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

  • [ @typetext =] 'typetext'
    Définition de la colonne à ajouter. typetext est de type nvarchar(3000), sans 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. L'argument publication_to_add est de type nvarchar(4000), avec la valeur par défaut ALL. 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. L'argument 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 des procédures stockées par défaut qui sont 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 exécuter 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 une capture instantanée. force_invalidate_snapshot est de type bit, avec la valeur par défaut 1.

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

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

  • [ @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 a été désapprouvé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 Modification du 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é 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 du rôle serveur fixe sysadmin et du rôle de base de données fixe db_owner peuvent exécuter sp_repladdcolumn.