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 desusado y se admite fundamentalmente por cuestiones de compatibilidad con las versiones anteriores. Solo debe utilizarse 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 temas Convenciones 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 la 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 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 valor predeterminado. Por ejemplo, si se va a agregar la columna order_filled y es un campo de un solo carácter distinto de 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, solo se agregará la nueva columna a esta publicación.

  • [ @from\_agent = ] from_agent
    Si un agente de replicación está ejecutando el procedimiento almacenado. from_agent es de tipo int, con un valor predeterminado de 0; se utiliza el valor 1 cuando un agente de replicación está ejecutando este procedimiento almacenado y, en cualquier otro caso, se debe utilizar el valor predeterminado de 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 un cambio del esquema se realice en un artículo de tabla replicado mediante sp_repladdcolumn, y puede utilizarse para lo siguiente:

    • 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 capacidad de que se invalide 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; solo 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 replica automáticamente estos comandos DDL siempre que se haya habilitado la replicación DDL. Para obtener más información, vea Realizar cambios de esquema en bases de datos de publicaciones.

sp_repladdcolumn todavía se requiere para propagar los cambios de DDL desde los suscriptores de republicación que se ejecuten 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_repladdcolumn y realiza un cambio de esquema en un artículo que pertenezca 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 publicación 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 publicación.

Permisos

Solo los miembros del rol fijo de servidor sysadmin y de los roles fijos de base de datos db_owner pueden ejecutar sp_repladdcolumn.

Vea también

Referencia

Procedimientos almacenados del sistema (Transact-SQL)

Conceptos

Características que ya no se utilizan en la replicación de SQL Server