Compartir a través de


sp_addpublication (Transact-SQL)

Crea una publicación de instantáneas o transaccional. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_addpublication [ @publication = ] 'publication'
    [ , [ @taskid = ] tasked ]
    [ , [ @restricted = ] 'restricted' ]
    [ , [ @sync_method = ] 'sync_method' ]
    [ , [ @repl_freq = ] 'repl_freq' ]
    [ , [ @description = ] 'description' ]
    [ , [ @status = ] 'status' ]
    [ , [ @independent_agent = ] 'independent_agent' ]
    [ , [ @immediate_sync = ] 'immediate_sync' ]
    [ , [ @enabled_for_internet = ] 'enabled_for_internet' ]
    [ , [ @allow_push = ] 'allow_push'
    [ , [ @allow_pull = ] 'allow_pull' ]
    [ , [ @allow_anonymous = ] 'allow_anonymous' ]
    [ , [ @allow_sync_tran = ] 'allow_sync_tran' ]
    [ , [ @autogen_sync_procs = ] 'autogen_sync_procs' ]
    [ , [ @retention = ] retention ]
    [ , [ @allow_queued_tran= ] 'allow_queued_updating' ]
    [ , [ @snapshot_in_defaultfolder= ] 'snapshot_in_default_folder' ]
    [ , [ @alt_snapshot_folder= ] 'alternate_snapshot_folder' ]
    [ , [ @pre_snapshot_script= ] 'pre_snapshot_script' ]
    [ , [ @post_snapshot_script= ] 'post_snapshot_script' ]
    [ , [ @compress_snapshot= ] 'compress_snapshot' ]
    [ , [ @ftp_address = ] 'ftp_address' ]
    [ , [ @ftp_port= ] ftp_port ]
    [ , [ @ftp_subdirectory = ] 'ftp_subdirectory' ]
    [ , [ @ftp_login = ] 'ftp_login' ]
    [ , [ @ftp_password = ] 'ftp_password' ]
    [ , [ @allow_dts = ] 'allow_dts' ]
    [ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ]
    [ , [ @conflict_policy = ] 'conflict_policy' ]
    [ , [ @centralized_conflicts = ] 'centralized_conflicts' ] 
    [ , [ @conflict_retention = ] conflict_retention ]
    [ , [ @queue_type = ] 'queue_type' ]
    [ , [ @add_to_active_directory = ] 'add_to_active_directory' ]
    [ , [ @logreader_job_name = ] 'logreader_agent_name' ]
    [ , [ @qreader_job_name = ] 'queue_reader_agent_name' ]
    [ , [ @publisher = ] 'publisher' ] 
    [ , [ @allow_initialize_from_backup = ] 'allow_initialize_from_backup' ]
    [ , [ @replicate_ddl = ] replicate_ddl ]
    [ , [ @enabled_for_p2p = ] 'enabled_for_p2p' ]
    [ , [ @publish_local_changes_only = ] 'publish_local_changes_only' ]
    [ , [ @enabled_for_het_sub = ] 'enabled_for_het_sub' ]
    [ , [ @p2p_conflictdetection = ] 'p2p_conflictdetection' ]
    [ , [ @p2p_originator_id = ] p2p_originator_id
    [ , [ @p2p_continue_onconflict = ] 'p2p_continue_onconflict'
    [ , [ @allow_partition_switch = ] 'allow_partition_switch'
    [ , [ @replicate_partition_switch = ]'replicate_partition_switch'

Argumentos

  • [ @publication=] 'publication'
    Es el nombre de la publicación que se va a crear. publication es de tipo sysname y no tiene ningún valor predeterminado. El nombre debe ser único en la base de datos.

  • [ @taskid=] taskid
    Se admite únicamente por compatibilidad con versiones anteriores; utilice sp_addpublication_snapshot (Transact-SQL).

  • [ @restricted=] 'restricted'
    Se admite únicamente por compatibilidad con versiones anteriores; utilice default_access.

  • [ @sync_method=] 'sync_method**'**
    Es el modo de sincronización. sync_method es nvarchar(13), y puede ser uno de los siguientes valores.

    Valor

    Descripción

    native

    Produce la salida de todas las tablas mediante un programa de copia masiva en modo nativo. No es compatible con publicadores de Oracle.

    character

    Produce la salida de todas las tablas mediante un programa de copia masiva en modo de carácter. Para un publicador de Oracle, character solo es válido para la replicación de instantáneas.

    concurrent

    Produce la salida de todas las tablas mediante un programa de copia masiva en modo nativo, pero no bloquea las tablas durante la instantánea. Solo se admite para publicaciones transaccionales. No es compatible con publicadores de Oracle.

    concurrent_c

    Produce la salida de todas las tablas mediante un programa de copia masiva en modo de carácter, pero no bloquea las tablas durante la instantánea. Solo se admite para publicaciones transaccionales.

    database snapshot

    Produce la salida de todas las tablas mediante un programa de copia masiva en modo nativo desde una instantánea de base de datos. Las instantáneas de base de datos no están disponibles en cada edición de Microsoft SQL Server. Para obtener una lista de características admitidas por las ediciones de SQL Server, vea Características compatibles con las ediciones de SQL Server 2012.

    database snapshot character

    Produce la salida de todas las tablas mediante un programa de copia masiva en modo de carácter desde una instantánea de base de datos. Las instantáneas de base de datos no están disponibles en cada edición de Microsoft SQL Server. Para obtener una lista de características admitidas por las ediciones de SQL Server, vea Características compatibles con las ediciones de SQL Server 2012.

    NULL (valor predeterminado)

    Adopta de forma predeterminada el valor native para publicadores de Microsoft SQL Server. Para los publicadores que no sean de SQL Server, adopta de forma predeterminada el valor character cuando el valor de repl_freq es Snapshot y el valor concurrent_c en el resto de los casos.

  • [ @repl_freq=] 'repl_freq'
    Es el tipo de frecuencia de replicación. repl_freq es de tipo nvarchar(10) y puede tener uno de los siguientes valores.

    Valor

    Descripción

    continuous (predeterminado)

    El publicador proporciona la salida de todas las transacciones basadas en el registro. Para los publicadores que no sean de SQL Server, esto requiere que sync_method se defina como concurrent_c.

    snapshot

    El publicador solamente genera eventos de sincronización programados. Para los publicadores que no sean de SQL Server, esto requiere que sync_method se defina como character.

  • [ @description=] 'description'
    Es una descripción opcional de la publicación. description es de tipo nvarchar(255) y su valor predeterminado es NULL.

  • [ @status=] 'status'
    Especifica si los datos de publicación están disponibles. status es nvarchar(8), y puede ser uno de los siguientes valores.

    Valor

    Descripción

    active

    Los datos de la publicación están inmediatamente disponibles para los suscriptores.

    inactive (predeterminado)

    Los datos de la publicación no están disponibles para los suscriptores la primera vez que se crea la publicación (pueden suscribirse, pero las suscripciones no se procesan).

    No es compatible con publicadores de Oracle.

  • [ @independent_agent=] 'independent_agent'
    Especifica si hay un agente de distribución independiente para esta publicación. independent_agent es de tipo nvarchar(5) y su valor predeterminado es FALSE. Si es true, indica que existe un Agente de distribución independiente para esta publicación. Si es false, la publicación utiliza un Agente de distribución compartido, y cada par de base de datos de publicador y base de datos de suscriptor tiene un único agente compartido.

  • [ @immediate_sync=] 'immediate_synchronization'
    Especifica si los archivos de sincronización de la publicación se crean cada vez que se ejecuta el agente de instantáneas. immediate_synchronization es de tipo nvarchar(5) y su valor predeterminado es FALSE. Si es true, los archivos de sincronización se crean o se vuelven a crear cada vez que se ejecuta el Agente de instantáneas. Los suscriptores pueden disponer inmediatamente de los archivos si el Agente de instantáneas ya ha terminado su tarea antes de crear la suscripción. Las nuevas suscripciones obtienen los últimos archivos de sincronización generados por la ejecución más reciente del Agente de instantáneas. independent_agent debe ser true para que immediate_synchronization sea true. Si es false, los archivos de sincronización solo se crean si hay nuevas suscripciones. Es preciso llamar a sp_addsubscription para cada suscripción cuando se agrega incrementalmente un artículo nuevo a una publicación existente. Los suscriptores no pueden recibir los archivos de sincronización después de suscribirse hasta que los Agentes de instantáneas hayan empezado y terminado.

  • [ @enabled_for_internet=] 'enabled_for_internet'
    Especifica si la publicación está habilitada para Internet y determina si se puede utilizar el protocolo de transferencia de archivos (FTP) para transferir los archivos de instantánea a un suscriptor. enabled_for_internet es de tipo nvarchar(5) y su valor predeterminado es FALSE. Si es true, los archivos de sincronización de la publicación se colocan en el directorio C:\Archivos de programa\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp. El usuario debe crear el directorio Ftp.

  • [ @allow_push=] 'allow_push'
    Especifica si es posible crear suscripciones de inserción para la publicación indicada. allow_push es de tipo nvarchar(5) y su valor predeterminado es TRUE, lo que permite las suscripciones de inserción en la publicación.

  • [ @allow_pull=] 'allow_pull'
    Especifica si es posible crear suscripciones de extracción para la publicación indicada. allow_pull es de tipo nvarchar(5) y su valor predeterminado es FALSE. Si es false, no se admiten suscripciones de extracción en la publicación.

  • [ @allow_anonymous=] 'allow_anonymous'
    Especifica si es posible crear suscripciones anónimas para la publicación indicada. allow_anonymous es de tipo nvarchar(5) y su valor predeterminado es FALSE. Si es true, immediate_synchronization también debe estar establecido en true. Si es false, no se admiten suscripciones anónimas en la publicación.

  • [ @allow_sync_tran=] 'allow_sync_tran'
    Especifica si se permiten suscripciones de actualización inmediata en la publicación. allow_sync_tran es de tipo nvarchar(5) y su valor predeterminado es FALSE. true no es compatible con publicadores de Oracle.

  • [ @autogen_sync_procs=] 'autogen_sync_procs'
    Especifica si se ha generado en el publicador un procedimiento almacenado de sincronización para suscripciones de actualización. autogen_sync_procs es nvarchar(5), y puede ser uno de los siguientes valores.

    Valor

    Descripción

    true

    Se define de forma automática cuando se habilita la actualización de suscripciones.

    false

    Se define automáticamente cuando no se ha habilitado la actualización de suscripciones o para publicadores de Oracle.

    NULL (predeterminado)

    Adopta el valor true de forma predeterminada cuando se habilita la actualización de suscripciones y false en el caso contrario.

    [!NOTA]

    El valor suministrado por el usuario para autogen_sync_procsse sobrescribirá en función de los valores especificados para allow_queued_tran y allow_sync_tran.

  • [ @retention=] retention
    Es el período de retención, en horas, para la actividad de suscripción. retention es de tipo int y su valor predeterminado es 336 horas. Si una suscripción no ha estado activa durante el período de retención, expira y se quita. El valor puede ser mayor que el período máximo de retención de la base de datos de distribución utilizada por el publicador. Si es 0, las suscripciones conocidas de la publicación no expirarán nunca y no las quitará el Agente de limpieza de suscripción expirada.

  • [ @allow_queued_tran= ] 'allow_queued_updating'
    Habilita o deshabilita la colocación en cola de los cambios del suscriptor hasta que se puedan aplicar en el publicador. allow_queued_updating es de tipo nvarchar(5) y su valor predeterminado es FALSE. Si es false, los cambios del suscriptor no se ponen en cola. true no es compatible con publicadores de Oracle.

  • [ @snapshot_in_defaultfolder= ] 'snapshot_in_default_folder'
    Especifica si los archivos de instantánea se almacenan en la carpeta predeterminada. snapshot_in_default_folder es de tipo nvarchar(5) y su valor predeterminado es TRUE. Si es true, los archivos de instantánea se encuentran en la carpeta predeterminada. Si es false, los archivos de instantánea se han almacenado en la ubicación alternativa especificada por alternate_snapshot_folder. Las ubicaciones alternativas pueden encontrarse en otro servidor, en una unidad de red o en medios extraíbles (tales como CD-ROM o discos extraíbles). También puede guardar los archivos de instantánea en un sitio FTP, para que el suscriptor los recupere más tarde. Observe que este parámetro puede ser true y seguir teniendo una ubicación en el parámetro @alt_snapshot_folder. Esta combinación especifica que los archivos de instantánea se almacenarán tanto en la ubicación predeterminada como en la alternativa.

  • [ @alt_snapshot_folder= ] 'alternate_snapshot_folder'
    Especifica la ubicación de la carpeta alternativa de la instantánea. alternate_snapshot_folder es de tipo nvarchar(255) y su valor predeterminado es NULL.

  • [ @pre_snapshot_script= ] 'pre_snapshot_script'
    Especifica un puntero a una ubicación de archivo .sql. pre_snapshot_script es de tipo nvarchar(255), y su valor predeterminado es NULL. El Agente de distribución ejecutará el script previo a la instantánea antes de ejecutar cualquiera de los scripts de objetos replicados al aplicar la instantánea a un suscriptor. El script se ejecuta en el contexto de seguridad utilizado por el Agente de distribución al conectarse a la base de datos de suscripciones.

  • [ @post_snapshot_script= ] 'post_snapshot_script'
    Especifica un puntero a una ubicación de archivo .sql. post_snapshot_script es de tipo nvarchar(255) y su valor predeterminado es NULL. El Agente de distribución ejecutará el script posterior a la instantánea después de que se apliquen el resto de los scripts de objetos replicados y datos durante la sincronización inicial. El script se ejecuta en el contexto de seguridad utilizado por el Agente de distribución al conectarse a la base de datos de suscripciones.

  • [ @compress_snapshot= ] 'compress_snapshot'
    Especifica que la instantánea que se ha escrito en la ubicación @alt_snapshot_folder está comprimida en el formato CAB de Microsoft. compress_snapshot es de tipo nvarchar(5) y su valor predeterminado es FALSE. false especifica que la instantánea no se comprimirá; true especifica que sí se comprimirá. No se pueden comprimir los archivos de instantánea de más de 2 gigabytes (GB). Los archivos de instantánea comprimidos se descomprimen en la ubicación en la que se ejecuta el Agente de distribución; por lo general, se usan suscripciones de extracción con las instantáneas comprimidas para descomprimir los archivos en el suscriptor. La instantánea de la carpeta predeterminada no se puede comprimir.

  • [ @ftp_address = ] 'ftp_address'
    Es la dirección de red del servicio FTP para el distribuidor. ftp_address es de tipo sysname y su valor predeterminado es NULL. Especifica dónde se encuentran los archivos de instantánea de una publicación para que los recoja el Agente de distribución o el Agente de mezcla de un suscriptor. Puesto que esta propiedad se almacena para cada publicación, cada publicación puede tener un parámetro ftp_address diferente. La publicación debe ser compatible con la propagación de instantáneas mediante FTP.

  • [ @ftp_port= ] ftp_port
    Es el número de puerto del servicio FTP para el distribuidor. ftp_port es de tipo int y su valor predeterminado es 21. Especifica dónde se encuentran los archivos de instantánea de una publicación para que los recoja el Agente de distribución o el Agente de mezcla de un suscriptor. Puesto que esta propiedad se almacena para todas las publicaciones, cada publicación puede tener un valor de ftp_port propio.

  • [ @ftp_subdirectory = ] 'ftp_subdirectory'
    Especifica dónde estarán disponibles los archivos de instantánea para que los recoja el Agente de distribución o el Agente de mezcla del suscriptor si la publicación admite la propagación de instantáneas mediante FTP. ftp_subdirectory es de tipo nvarchar(255) y su valor predeterminado es NULL. Puesto que esta propiedad se almacena para todas las publicaciones, cada publicación puede tener su propio ftp_subdirctory o elegir no tener subdirectorio, indicándolo con un valor NULL.

  • [ @ftp_login = ] 'ftp_login'
    Es el nombre de usuario que se utiliza para conectar con el servicio FTP. ftp_login es de tipo sysname y su valor predeterminado es ANONYMOUS.

  • [ @ftp_password = ] 'ftp_password'
    Es la contraseña del usuario que se utiliza para conectarse al servicio FTP. ftp_password es de tipo sysname y su valor predeterminado es NULL.

  • [ @allow_dts = ] 'allow_dts'
    Especifica que la publicación permite transformaciones de datos. Puede especificar un paquete DTS al crear una suscripción. allow_transformable_subscriptions es de tipo nvarchar(5) y su valor predeterminado es FALSE, lo que no permite transformaciones DTS. Cuando allow_dts es cierto, sync_method deben estar establecidos en character o concurrent_c.

    true no es compatible con publicadores de Oracle.

  • [ @allow_subscription_copy = ] 'allow_subscription_copy'
    Habilita o deshabilita la funcionalidad de copia de las bases de datos de suscripciones suscritas a esta publicación. allow_subscription_copy es de tiponvarchar(5) y su valor predeterminado es FALSE.

  • [ @conflict_policy = ] 'conflict_policy'
    Especifica la directiva de resolución de conflictos seguida cuando se utiliza la opción de suscriptor de actualización en cola. conflict_policy es de tipo nvarchar(100), su valor predeterminado es NULL y puede tener cualquiera de los valores siguientes.

    Valor

    Descripción

    pub wins

    El publicador gana el conflicto

    sub reinit

    Reinicializar la suscripción.

    sub wins

    El suscriptor gana el conflicto

    NULL (predeterminado)

    Si es NULL y se trata de una publicación de instantánea, la directiva predeterminada será sub reinit. Si es NULL y no se trata de una publicación de instantánea, la directiva predeterminada será pub wins.

    No es compatible con publicadores de Oracle.

  • [ @centralized_conflicts = ] 'centralized_conflicts'
    Especifica si los registros de conflicto se almacenan en el publicador. centralized_conflicts es de tipo nvarchar(5) y su valor predeterminado es TRUE. Si es true, los registros de conflictos se almacenan en el publicador. Si es false, los registros de conflictos se almacenan tanto en el publicador como en el suscriptor que provocó el conflicto. No es compatible con publicadores de Oracle.

  • [ @conflict_retention = ] conflict_retention
    Especifica el período de retención de conflictos, en días. Es el período de tiempo durante el que se almacenan los metadatos de conflictos para la replicación transaccional punto a punto y para las suscripciones de actualización en cola. conflict_retention es de tipo int y su valor predeterminado es 14. No es compatible con publicadores de Oracle.

  • [ @queue_type = ] 'queue_type'
    Especifica el tipo de cola utilizado. queue_type es de tipo nvarchar(10), su valor predeterminado es NULL y puede tener uno de estos valores.

    Valor

    Descripción

    sql

    Utiliza SQL Server para almacenar las transacciones.

    NULL (valor predeterminado)

    Adopta el valor predeterminado sql, que especifica el uso de SQL Server para almacenar las transacciones.

    [!NOTA]

    La compatibilidad para utilizar Microsoft Message Queue Server ha dejado de incluirse. Especificar un valor de msmq dará como resultado una advertencia y la replicación definirá automáticamente el valor como sql.

    No es compatible con publicadores de Oracle.

  • [ @add_to_active_directory = ] 'add_to_active_directory'
    Este parámetro ha quedado desusado y solo se admite para la compatibilidad de scripts con versiones anteriores. Ya no es posible agregar información de las publicaciones a Microsoft Active Directory.

  • [ @logreader_job_name = ] 'logreader_agent_name'
    Es el nombre de un trabajo del agente existente. logreader_agent_name es de tipo sysname y su valor predeterminado es NULL. Este parámetro se especifica solo cuando el Agente de registro del LOG utiliza un trabajo existente en lugar de otro nuevo que se esté creando.

  • [ @qreader_job_name = ] 'queue_reader_agent_name'
    Es el nombre de un trabajo del agente existente. queue_reader_agent_name es de tipo sysname y su valor predeterminado es NULL. Este parámetro se especifica solo cuando el Agente de lectura de cola utiliza un trabajo existente en lugar de otro nuevo que se esté creando.

  • [ @publisher = ] 'publisher'
    Especifica un publicador que no es de SQL Server. publisher es de tipo sysname y su valor predeterminado es NULL.

    [!NOTA]

    publisher no debería utilizarse al agregar una publicación a un publicador de SQL Server.

  • [ @allow_initialize_from_backup = ] 'allow_initialize_from_backup'
    Indica si los suscriptores pueden inicializar una suscripción a esta publicación a partir de una copia de seguridad en lugar de una instantánea inicial. allow_initialize_from_backup es de tipo nvarchar(5) y puede tener uno de estos valores:

    Valor

    Descripción

    true

    Habilita la inicialización desde una copia de seguridad.

    false

    Deshabilita la inicialización desde una copia de seguridad.

    NULL (predeterminado)

    Adopta de forma predeterminada el valor true para una publicación de una topología de replicación punto a punto y false para todas las demás publicaciones.

    Para obtener más información, vea Inicializar una suscripción transaccional sin una instantánea.

    Nota de advertenciaAdvertencia

    Para evitar perder los datos del suscriptor, al utilizar sp_addpublication con @allow_initialize_from_backup = N'true', utilice siempre @immediate_sync = N'true'.

  • [@replicate_ddl = ] replicate_ddl
    Indica si se admite la replicación de esquemas para la publicación. replicate_ddl es de tipo int. Su valor predeterminado es 1 para los publicadores de SQL Server y 0 para los publicadores que no son de SQL Server. 1 indica que las instrucciones de lenguaje de definición de datos (DDL) ejecutadas en el publicador se replican, y 0 indica que las instrucciones DDL no se replican. La replicación de esquema no es compatible con publicadores de Oracle. Para obtener más información, vea Realizar cambios de esquema en bases de datos de publicaciones.

    El parámetro @replicate\_ddl se respeta cuando una instrucción DDL agrega una columna. El parámetro @replicate\_ddl se omite cuando una instrucción DDL modifica o quita una columna por los motivos siguientes.

    • Cuando se quita una columna, sysarticlecolumns debe actualizarse para evitar que las nuevas instrucciones DML incluyan la columna que se quitó, lo que haría que el agente de distribución produjera un error. El parámetro @replicate\_ddl se omite porque la replicación siempre debe replicar el cambio de esquema.

    • Cuando se modifica una columna, es posible que el tipo de datos de origen o la nulabilidad hayan cambiado, lo que hace que las instrucciones DML contengan un valor que quizás no sea compatible con la tabla en el suscriptor. Estas instrucciones DML pueden hacer que el agente de distribución genere un error. El parámetro @replicate\_ddl se omite porque la replicación siempre debe replicar el cambio de esquema.

    • Cuando una instrucción DDL agrega una columna nueva, sysarticlecolumns no incluye esta columna nueva. Las instrucciones DML no intentarán replicar datos para la nueva columna. El parámetro se respeta porque la instrucción DDL es aceptable se realice o no la replicación.

  • [ @enabled_for_p2p = ] 'enabled_for_p2p'
    Permite utilizar la publicación en una topología de replicación punto a punto. enabled_for_p2p es de tipo nvarchar(5) y su valor predeterminado es FALSE. true indica que la publicación admite la replicación punto a punto. Al definir enabled_for_p2p como true, se aplican las siguientes restricciones:

    • allow_anonymous debe ser false.

    • allow_dts debe ser false.

    • allow_initialize_from_backup debe ser true.

    • allow_queued_tran debe ser false.

    • allow_sync_tran debe ser false.

    • conflict_policy debe ser false.

    • independent_agent debe ser true.

    • repl_freq debe ser continuous.

    • replicate_ddl debe ser 1.

    Para obtener más información, vea Replicación transaccional punto a punto.

  • [ @publish_local_changes_only = ] 'publish_local_changes_only'
    Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

  • [ @enabled_for_het_sub= ] 'enabled_for_het_sub'
    Habilita la publicación para que admita suscriptores que no son de SQL Server. enabled_for_het_sub es de tipo nvarchar(5) y su valor predeterminado es FALSE. Un valor true significa que la publicación admite suscriptores que no sean de SQL Server. Si enabled_for_het_sub es true, se aplican las siguientes restricciones:

    • allow_initialize_from_backup debe ser false.

    • allow_push debe ser true.

    • allow_queued_tran debe ser false.

    • allow_subscription_copy debe ser false.

    • allow_sync_tran debe ser false.

    • autogen_sync_procs debe ser false.

    • conflict_policy debe ser NULL.

    • enabled_for_internet debe ser false.

    • enabled_for_p2p debe ser false.

    • ftp_address debe ser NULL.

    • ftp_subdirectory debe ser NULL.

    • ftp_password debe ser NULL.

    • pre_snapshot_script debe ser NULL.

    • post_snapshot_script debe ser NULL.

    • replicate_ddl debe ser 0.

    • qreader_job_name debe ser NULL.

    • queue_type debe ser NULL.

    • sync_method no puede ser native ni concurrent.

    Para obtener más información, vea Suscriptores que no son de SQL Server.

  • [ @p2p_conflictdetection= ] 'p2p_conflictdetection'
    Habilita el agente de distribución para detectar conflictos si la publicación está habilitada para la replicación punto a punto. p2p_conflictdetection es de tipo nvarchar(5) y su valor predeterminado es TRUE. Para obtener más información, vea Detección de conflictos en la replicación punto a punto.

  • [ @p2p_originator_id= ] p2p_originator_id
    Especifica un Id. para un nodo en una topología punto a punto. p2p_originator_id es de tipo int y su valor predeterminado es NULL. Este identificador se usa para la detección de conflictos si p2p_conflictdetection está establecido en TRUE. Especifique un identificador positivo distinto de cero que no se haya utilizado jamás en la topología. Para obtener una lista de los identificadores que ya se han utilizado, ejecute sp_help_peerconflictdetection.

  • [ @p2p_continue_onconflict= ] 'p2p_continue_onconflict'
    Determina si el Agente de distribución continúa procesando los cambios después de la detección de un conflicto. p2p_continue_onconflict es de tipo nvarchar(5) y su valor predeterminado es FALSE.

    Nota de advertenciaAdvertencia

    Recomendamos que utilice el valor predeterminado de FALSE. Cuando esta opción está establecida en TRUE, el Agente de distribución intenta converger los datos en la topología aplicando la fila en conflicto del nodo que tiene el Id. de originador más alto. Este método no garantiza la convergencia. Debería asegurarse de que la topología es coherente una vez detectado un conflicto. Para obtener más información, vea "Tratamiento de conflictos" en Detección de conflictos en la replicación punto a punto.

  • [ @allow_partition_switch= ] 'allow_partition_switch'
    Especifica si las instrucciones ALTER TABLE...SWITCH se pueden ejecutar con la base de datos publicada. allow_partition_switch es de tipo nvarchar(5) y su valor predeterminado es FALSE. Para obtener más información, vea Replicar tablas e índices con particiones.

  • [ @replicate_partition_switch= ] 'replicate_partition_switch'
    Especifica si las instrucciones ALTER TABLE...SWITCH que se ejecutan con la base de datos publicada se deben replicar en los suscriptores. replicate_partition_switch es de tipo nvarchar(5) y su valor predeterminado es FALSE. Esta opción solo es válida si allow_partition_switch se establece en TRUE.

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

sp_addpublication se utiliza en la replicación de instantáneas y transaccional.

Si existen varias publicaciones que publiquen el mismo objeto de base de datos, solo las publicaciones con el valor 1 en el parámetro replicate_ddl replicarán las instrucciones ALTER TABLE, ALTER VIEW, ALTER PROCEDURE, ALTER FUNCTION y ALTER TRIGGER de DDL. No obstante, todas las publicaciones que estén publicando la columna eliminada replicarán una instrucción DDL ALTER TABLE DROP COLUMN.

Con la replicación DDL habilitada (replicate_ddl = 1) para una publicación, para poder hacer cambios sin replicación DDL en la publicación, primero debe ejecutar sp_changepublication para establecer replicate_ddl en 0. Una vez que se hayan ejecutado las instrucciones de DDL sin replicación, se puede volver a ejecutar sp_changepublication para activar de nuevo la replicación DDL.

Ejemplo

-- To avoid storing the login and password in the script file, the values 
-- are passed into SQLCMD as scripting variables. For information about 
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksProductTran'; 
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login); 
-- This should be passed at runtime.
SET @password = $(Password); 

-- Enable transactional or snapshot replication on the publication database.
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- Execute sp_addlogreader_agent to create the agent job. 
EXEC sp_addlogreader_agent 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;

-- Create a new transactional publication with the required properties. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_push = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true';

-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;
GO

Permisos

Solo los miembros del rol fijo de servidor sysadmin o del rol fijo de base de datos db_owner pueden ejecutar sp_addpublication. Los inicios de sesión que usan la autenticación de Windows deben tener una cuenta de usuario en la base de datos que represente su cuenta de usuario de Windows. No es suficiente con una cuenta de usuario que represente un grupo de Windows.

Vea también

Referencia

sp_addlogreader_agent (Transact-SQL)

sp_addpublication_snapshot (Transact-SQL)

sp_changepublication (Transact-SQL)

sp_droppublication (Transact-SQL)

sp_helppublication (Transact-SQL)

sp_replicationdboption (Transact-SQL)

Procedimientos almacenados de replicación (Transact-SQL)

Conceptos

Publicar datos y objetos de base de datos