Compartir a través de


sp_repladdcolumn (Transact-SQL)

Agrega una columna a un artículo de tabla existente que ha sido publicado. Permite agregar la nueva columna a todos los publicadores que publican esta tabla o, simplemente, agregar la columna a una publicación específica que publica la tabla. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicaciones.

Nota importanteImportante

Este procedimiento almacenado ha quedado obsoleto; se admite principalmente por compatibilidad con versiones anteriores. Sólo se puede utilizar con publicadores de Microsoft SQL Server 2000 y suscriptores de SQL Server 2000 que se pueden volver a publicar. Este procedimiento no se debería utilizar en columnas con tipos de datos incluidos en SQL Server 2005 o SQL Server 2008.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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 ]

Argumentos

  • [ @source_object =] 'source_object'
    Es el nombre del artículo de tabla que contiene la nueva columna que se va a agregar. source_object es de tipo nvarchar(358) y no tiene valor predeterminado.

  • [ @column =] 'column'
    Es el nombre de la columna de la tabla que se va a agregar para la replicación. column es de tipo sysname y no tiene valor predeterminado.

  • [ @typetext =] 'typetext'
    Es la definición de la columna que se va a agregar. typetext es de tipo nvarchar(3000) y no tiene ningún valor predeterminado. Por ejemplo, si se va a agregar la columna order_filled y es un campo de un carácter no NULL, y tiene el valor predeterminado N, order_filled sería el parámetro column, mientras que la definición de la columna, char(1) NOT NULL CONSTRAINT constraint_name DEFAULT 'N' sería el valor del parámetro typetext.

  • [ @publication_to_add =] 'publication_to_add'
    Es el nombre de la publicación a la que se agrega la nueva columna. publication_to_add es de tipo nvarchar(4000) y su valor predeterminado es ALL. Si el valor es ALL, todas las publicaciones que contienen esta tabla se verán afectadas. Si se especifica publication_to_add, sólo se agregará la nueva columna a esta publicación.

  • [ @from_agent = ] from_agent
    Indica si un agente de replicación está ejecutando el procedimiento almacenado. from_agent es de tipo int y su valor predeterminado es 0; el valor 1 se utiliza cuando un agente de replicación está ejecutando el procedimiento almacenado y, en los demás casos, se debe utilizar el valor predeterminado 0.

  • [ @schema_change_script =] 'schema_change_script'
    Especifica el nombre y la ruta de acceso de un script de SQL Server utilizado para modificar los procedimientos almacenados personalizados generados por el sistema. schema_change_script es de tipo nvarchar(4000) y su valor predeterminado es NULL. La replicación permite que los procedimientos almacenados personalizados definidos por el usuario sustituyan a uno o más de los procedimientos predeterminados utilizados en la replicación transaccional. schema_change_script se ejecuta después de que se realice un cambio de esquema en un artículo de tabla replicado mediante sp_repladdcolumn; puede utilizarse para realizar una de las operaciones siguientes:

    • Si los procedimientos almacenados personalizados se generan automáticamente, schema_change_script puede utilizarse para quitar esos procedimientos almacenados personalizados y sustituirlos por procedimientos almacenados personalizados definidos por el usuario que admitan el nuevo esquema.

    • Si los procedimientos almacenados personalizados no se vuelven a generar automáticamente, schema_change_scriptpuede utilizarse para volver a generar estos procedimientos almacenados o para crear procedimientos almacenados personalizados definidos por el usuario.

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Habilita o deshabilita la posibilidad de invalidar una instantánea. force_invalidate_snapshot es de tipo bit y su valor predeterminado es 1.

    El valor 1 significa que, al cambiar un artículo, la instantánea puede quedar invalidada y, en tal caso, el valor 1 concede el permiso necesario para que se produzca la nueva instantánea.

    0 especifica que los cambios en el artículo no invalidarán la instantánea.

  • [ @force_reinit_subscription = ] force_reinit_subscription
    Habilita o deshabilita la capacidad de reinicializar la suscripción. force_reinit_subscription es de tipo bit y su valor predeterminado es 0.

    El valor 0 especifica que los cambios en el artículo no obligarán a reinicializar la suscripción.

    El valor 1 significa que los cambios en un artículo pueden hacer que la suscripción se reinicialice y, en tal caso, este valor 1 concede el permiso necesario para que se reinicialice la suscripción.

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

sp_repladdcolumn ya no se utiliza; sólo se suministra por compatibilidad con versiones anteriores. Se puede agregar una columna a un artículo de tabla replicada a través de la ejecución de comandos de lenguaje de definición de datos (DDL) en la tabla publicada. La replicación automáticamente replica estos comandos DDL siempre que se haya habilitado la replicación DDL. Para obtener más información, vea Realizar cambios de esquema en las bases de datos de publicación.

sp_repladdcolumn todavía se requiere para propagar cambios DDL de suscriptores de republicación en ejecución en una versión anterior de suscriptores de SQL Server 2000.

sp_repladdcolumn se utiliza en todos los tipos de replicación.

Si utiliza sp_repldropcolumn y realiza un cambio de esquema en un artículo que pertenece a una publicación que utiliza un paquete de Servicios de transformación de datos (DTS), el cambio de esquema no se propaga al suscriptor y los procedimientos personalizados para INSERT, UPDATE o DELETE no se vuelven a generar en los suscriptores. Será necesario que el usuario vuelva a generar el paquete DTS manualmente y realice el cambio de esquema correspondiente en los suscriptores. Si no se aplica la actualización de esquema, es posible que el Agente de distribución no pueda aplicar las modificaciones siguientes. Antes de realizar un cambio de esquema, asegúrese de que no haya transacciones pendientes de entrega.

Cuando se asigna a typetext un valor predeterminado que representa una función no determinista (por ejemplo, 'datetime not null default getdate()'), se puede producir una ausencia de convergencia tras la adición de la nueva columna, dado que la función se ejecuta en el suscriptor para cargar un valor predeterminado en la columna.

Se filtran las columnas calculadas y de marca de tiempo en las publicaciones en modo de carácter. Si agrega una columna calculada o de marca de tiempo mediante sp_repladdcolumn, las suscripciones a dichas publicaciones no reciben esta nueva columna.

Nota importanteImportante

Se debe realizar una copia de seguridad de la base de datos de publicaciones después de ejecutar sp_repladdcolumn. Si no se hace, se puede producir un error de mezcla después de restaurar la base de datos de publicaciones.

Permisos

Sólo los miembros de la función fija de servidor sysadmin y de la función fija de base de datos db_owner pueden ejecutar sp_repladdcolumn.