sp_addpublication (Transact-SQL)
Se aplica a: SQL Server Azure SQL Managed Instance
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.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_addpublication
[ @publication = ] N'publication'
[ , [ @taskid = ] taskid ]
[ , [ @restricted = ] N'restricted' ]
[ , [ @sync_method = ] N'sync_method' ]
[ , [ @repl_freq = ] N'repl_freq' ]
[ , [ @description = ] N'description' ]
[ , [ @status = ] N'status' ]
[ , [ @independent_agent = ] N'independent_agent' ]
[ , [ @immediate_sync = ] N'immediate_sync' ]
[ , [ @enabled_for_internet = ] N'enabled_for_internet' ]
[ , [ @allow_push = ] N'allow_push' ]
[ , [ @allow_pull = ] N'allow_pull' ]
[ , [ @allow_anonymous = ] N'allow_anonymous' ]
[ , [ @allow_sync_tran = ] N'allow_sync_tran' ]
[ , [ @autogen_sync_procs = ] N'autogen_sync_procs' ]
[ , [ @retention = ] retention ]
[ , [ @allow_queued_tran = ] N'allow_queued_tran' ]
[ , [ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder' ]
[ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
[ , [ @pre_snapshot_script = ] N'pre_snapshot_script' ]
[ , [ @post_snapshot_script = ] N'post_snapshot_script' ]
[ , [ @compress_snapshot = ] N'compress_snapshot' ]
[ , [ @ftp_address = ] N'ftp_address' ]
[ , [ @ftp_port = ] ftp_port ]
[ , [ @ftp_subdirectory = ] N'ftp_subdirectory' ]
[ , [ @ftp_login = ] N'ftp_login' ]
[ , [ @ftp_password = ] N'ftp_password' ]
[ , [ @allow_dts = ] N'allow_dts' ]
[ , [ @allow_subscription_copy = ] N'allow_subscription_copy' ]
[ , [ @conflict_policy = ] N'conflict_policy' ]
[ , [ @centralized_conflicts = ] N'centralized_conflicts' ]
[ , [ @conflict_retention = ] conflict_retention ]
[ , [ @queue_type = ] N'queue_type' ]
[ , [ @add_to_active_directory = ] N'add_to_active_directory' ]
[ , [ @logreader_job_name = ] N'logreader_job_name' ]
[ , [ @qreader_job_name = ] N'qreader_job_name' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @allow_initialize_from_backup = ] N'allow_initialize_from_backup' ]
[ , [ @replicate_ddl = ] replicate_ddl ]
[ , [ @enabled_for_p2p = ] N'enabled_for_p2p' ]
[ , [ @publish_local_changes_only = ] N'publish_local_changes_only' ]
[ , [ @enabled_for_het_sub = ] N'enabled_for_het_sub' ]
[ , [ @p2p_conflictdetection = ] N'p2p_conflictdetection' ]
[ , [ @p2p_originator_id = ] p2p_originator_id ]
[ , [ @p2p_continue_onconflict = ] N'p2p_continue_onconflict' ]
[ , [ @allow_partition_switch = ] N'allow_partition_switch' ]
[ , [ @replicate_partition_switch = ] N'replicate_partition_switch' ]
[ , [ @allow_drop = ] N'allow_drop' ]
[ , [ @p2p_conflictdetection_policy = ] N'p2p_conflictdetection_policy' ]
[ ; ]
Argumentos
[ @publication = ] N'publication'
Nombre de la publicación que se va a crear. @publication es sysname, sin ningún valor predeterminado. El nombre debe ser único en la base de datos.
[ @taskid = ] taskid
Compatible solo con la compatibilidad con versiones anteriores; use sp_addpublication_snapshot.
[ @restricted = ] N'restricted'
Compatible solo con la compatibilidad con versiones anteriores; use default_access
.
[ @sync_method = ] N'sync_method'
Modo de sincronización. @sync_method es nvarchar(40) y puede ser uno de los valores siguientes.
Valor | Descripción |
---|---|
native 1 |
Genera la salida de todas las tablas mediante un programa de copia masiva en modo nativo. |
character |
Genera la salida de todas las tablas mediante un programa de copia masiva en modo de caracteres. Nota: Para un publicador de Oracle, character solo es válido para la replicación de instantáneas. |
concurrent 1 |
Genera la salida del programa de copia masiva en modo nativo de todas las tablas, pero no bloquea las tablas durante la instantánea. Solo se admite para publicaciones transaccionales. |
concurrent_c |
Genera la salida del programa de copia masiva en modo de caracteres de todas las tablas, 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 todas las ediciones de SQL Server. Para obtener una lista de las características admitidas por las ediciones de SQL Server, consulta Ediciones y características admitidas de SQL Server 2022. |
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 todas las ediciones de SQL Server. Para obtener una lista de las características admitidas por las ediciones de SQL Server, consulta Ediciones y características admitidas de SQL Server 2022. |
NULL (valor predeterminado) |
El valor predeterminado es native para publicadores de SQL Server. En el caso de los publicadores que no son de SQL Server, el character valor predeterminado es cuando el valor de @repl_freq es Snapshot y se concurrent_c para todos los demás casos. |
1 No se admite para publicadores de Oracle.
[ @repl_freq = ] N'repl_freq'
El tipo de frecuencia de replicación, @repl_freq es nvarchar(10) y puede ser uno de los siguientes valores.
Valor | Descripción |
---|---|
continuous (valor predeterminado) |
El agente de registro del log se ejecuta continuamente. Para los publicadores que no son de SQL Server, esto requiere que @sync_method establecerse concurrent_c en . |
snapshot |
El agente de registro del log se ejecuta según una programación. Para los publicadores que no son de SQL Server, esto requiere que @sync_method establecerse character en . |
[ @description = ] N'description'
Descripción opcional de la publicación. @description es nvarchar(255), con un valor predeterminado de NULL
.
[ @status = ] N'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 (valor predeterminado) |
Los datos de publicación no están disponibles para los suscriptores cuando se crea la publicación por primera vez (pueden suscribirse, pero las suscripciones no se procesan). |
No se admite para publicadores de Oracle.
[ @independent_agent = ] N'independent_agent'
Especifica si hay un Agente de distribución independiente para esta publicación. @independent_agent es nvarchar(5), con un valor predeterminado de false
.
- Si
true
es , hay una Agente de distribución independiente para esta publicación. - Si
false
es , la publicación usa una Agente de distribución compartida y cada par de base de datos de publicador o suscriptor tiene un único agente compartido.
[ @immediate_sync = ] N'immediate_sync'
Especifica si los archivos de sincronización de la publicación se crean cada vez que se ejecuta el agente de instantáneas. @immediate_sync es nvarchar(5), con un valor predeterminado de false
.
Si true
es , 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_sync sea true
. Si false
es , los archivos de sincronización solo se crean si hay nuevas suscripciones. Debe llamar a sp_addsubscription para cada suscripción al agregar incrementalmente un nuevo artículo a una publicación existente. Los suscriptores no pueden recibir los archivos de sincronización después de la suscripción hasta que se inicien y completen los Agente de instantáneas.
[ @enabled_for_internet = ] N'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 nvarchar(5), con un valor predeterminado de false
. Si true
es , los archivos de sincronización de la publicación se colocan en el C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp
directorio . El usuario debe crear el Ftp
directorio.
[ @allow_push = ] N'allow_push'
Especifica si es posible crear suscripciones de inserción para la publicación indicada. @allow_push es nvarchar(5), con un valor predeterminado de true
, que permite suscripciones de inserción en la publicación.
[ @allow_pull = ] N'allow_pull'
Especifica si es posible crear suscripciones de extracción para la publicación indicada. @allow_pull es nvarchar(5), con un valor predeterminado de false
. Si false
es , no se permiten suscripciones de extracción en la publicación.
[ @allow_anonymous = ] N'allow_anonymous'
Especifica si es posible crear suscripciones anónimas para la publicación indicada. @allow_anonymous es nvarchar(5), con un valor predeterminado de false
. Si true
es , @immediate_sync también debe establecerse true
en . Si false
es , no se permiten suscripciones anónimas en la publicación.
[ @allow_sync_tran = ] N'allow_sync_tran'
Especifica si se permiten suscripciones de actualización inmediata en la publicación. @allow_sync_tran es nvarchar(5), con un valor predeterminado de false
. true
no se admite para publicadores de Oracle.
[ @autogen_sync_procs = ] N'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 establece automáticamente cuando las suscripciones de actualización no están habilitadas o para publicadores de Oracle. |
NULL (valor predeterminado) |
El valor predeterminado es cuando true se habilitan las suscripciones de actualización y a false cuando no se habilitan las suscripciones de actualización. |
Nota:
El valor proporcionado por el usuario para @autogen_sync_procsse invalidará en función de los valores especificados para @allow_queued_tran y @allow_sync_tran.
[ @retention = ] retención
Período de retención en horas para la actividad de la suscripción. @retention es int, con un valor predeterminado de 336
. Si una suscripción no está activa dentro del 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 0
es , las suscripciones conocidas a la publicación nunca expirarán y las quitará el Agente de limpieza de suscripciones expiradas.
[ @allow_queued_tran = ] N'allow_queued_tran'
Habilita o deshabilita la colocación en cola de los cambios del suscriptor hasta que se puedan aplicar en el publicador. @allow_queued_tran es nvarchar(5), con un valor predeterminado de false
.
- Si
false
es , los cambios en el suscriptor no se ponen en cola. true
no se admite para publicadores de Oracle.
[ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder'
Especifica si los archivos de instantánea se almacenan en la carpeta predeterminada. @snapshot_in_defaultfolder es nvarchar(5), con un valor predeterminado de true
.
- Si
true
es , los archivos de instantánea se pueden encontrar en la carpeta predeterminada. - Si
false
es , los archivos de instantánea se han almacenado en la ubicación alternativa especificada por @alt_snapshot_folder.
Las ubicaciones alternativas pueden estar en otro servidor, en una unidad de red o en medios extraíbles (como 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. 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áneas se almacenarán tanto en la ubicación predeterminada como en la alternativa.
[ @alt_snapshot_folder = ] N'alt_snapshot_folder'
Especifica la ubicación de la carpeta alternativa de la instantánea. @alt_snapshot_folder es nvarchar(255), con un valor predeterminado de NULL
.
[ @pre_snapshot_script = ] N'pre_snapshot_script'
Especifica un puntero a una ubicación de archivo .sql . @pre_snapshot_script es nvarchar(255), con un valor predeterminado de NULL
. El Agente de distribución ejecutará el script previo a la instantánea antes de la ejecución de cualquiera de los scripts de objetos replicados al aplicar la instantánea en 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 = ] N'post_snapshot_script'
Especifica un puntero a una .sql
ubicación de archivo. @post_snapshot_script es nvarchar(255), con un valor predeterminado de NULL
. El Agente de distribución ejecutará el script posterior a la instantánea después de que se apliquen el resto de 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 = ] N'compress_snapshot'
Especifica que la instantánea escrita en la ubicación de @alt_snapshot_folder se va a comprimir en el formato CAB de Microsoft. @compress_snapshot es nvarchar(5), con un valor predeterminado de false
.
false
especifica que la instantánea no está comprimida.true
especifica que la instantánea está comprimida.
Los archivos de instantánea que tienen más de 2 gigabytes (GB) no se pueden comprimir. 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 = ] N'ftp_address'
Dirección de red del servicio FTP para el distribuidor. @ftp_address es sysname, con un valor predeterminado de 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. Dado que esta propiedad se almacena para cada publicación, cada publicación puede tener una @ftp_address diferente. La publicación debe ser compatible con la propagación de instantáneas mediante FTP.
[ @ftp_port = ] ftp_port
Número de puerto del servicio FTP para el distribuidor. @ftp_port es int, con un valor predeterminado de 21
. Especifica dónde se encuentran los archivos de instantáneas de publicación para el Agente de distribución o Agente de mezcla de un suscriptor que se va a recoger. Dado que esta propiedad se almacena para cada publicación, cada publicación puede tener su propia @ftp_port.
[ @ftp_subdirectory = ] N'ftp_subdirectory'
Especifica dónde están disponibles los archivos de instantáneas para el Agente de distribución o Agente de mezcla de suscriptor para recoger si la publicación admite la propagación de instantáneas mediante FTP. @ftp_subdirectory es nvarchar(255), con un valor predeterminado de NULL
. Dado que esta propiedad se almacena para cada publicación, cada publicación puede tener su propia @ftp_subdirctory o elegir no tener ningún subdirectorio, indicado con un NULL
valor.
[ @ftp_login = ] N'ftp_login'
Nombre de usuario usado para conectarse al servicio FTP. @ftp_login es sysname, con un valor predeterminado de anonymous
.
[ @ftp_password = ] N'ftp_password'
Contraseña de usuario usada para conectarse al servicio FTP. @ftp_password es sysname, con un valor predeterminado de NULL
.
[ @allow_dts = ] N'allow_dts'
Especifica que la publicación permite transformaciones de datos. Puede especificar un paquete DTS al crear una suscripción. @allow_dts es nvarchar(5), con un valor predeterminado de false
, que no permite transformaciones DTS. Cuando @allow_dts es true, @sync_method debe establecerse en character
o concurrent_c
.
true
no se admite para publicadores de Oracle.
[ @allow_subscription_copy = ] N'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 nvarchar(5), con un valor predeterminado de false
.
[ @conflict_policy = ] N'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 nvarchar(100) y puede ser uno 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 (valor predeterminado) |
Si NULL , y la publicación es una publicación de instantáneas, la directiva predeterminada se convierte en sub reinit . Si NULL y la publicación no son una publicación de instantáneas, el valor predeterminado se convierte en pub wins . |
No se admite para publicadores de Oracle.
[ @centralized_conflicts = ] N'centralized_conflicts'
Especifica si los registros de conflictos se almacenan en el publicador. @centralized_conflicts es nvarchar(5), con un valor predeterminado de NULL
.
- Si
true
es , los registros de conflictos se almacenan en el publicador. - Si
false
es , los registros de conflictos se almacenan tanto en el publicador como en el suscriptor que provocó el conflicto.
No se admite para 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 int, con un valor predeterminado de 14
.
No se admite para publicadores de Oracle.
[ @queue_type = ] N'queue_type'
Especifica el tipo de cola utilizado. @queue_type es nvarchar(10) y puede ser uno de estos valores.
Valor | Descripción |
---|---|
sql |
Use SQL Server para almacenar transacciones. |
NULL (valor predeterminado) |
El valor predeterminado es sql , que especifica el uso de SQL Server para almacenar transacciones. |
Nota:
La compatibilidad con el uso de Microsoft Message Queuing se interrumpe. Si especifica un valor de msmq
, se producirá una advertencia y la replicación establecerá automáticamente el valor sql
en .
No se admite para publicadores de Oracle.
[ @add_to_active_directory = ] N'add_to_active_directory'
Este parámetro está en desuso y solo se admite para la compatibilidad con versiones anteriores de scripts. Ya no puede agregar información de publicación a Microsoft Active Directory.
[ @logreader_job_name = ] N'logreader_job_name'
Nombre de un trabajo de agente existente. @logreader_job_name es sysname, con un valor predeterminado de NULL
. Este parámetro solo se especifica cuando el Agente de registro del Log usa un trabajo existente en lugar de crear uno nuevo.
[ @qreader_job_name = ] N'qreader_job_name'
Nombre de un trabajo de agente existente. @qreader_job_name es sysname, con un valor predeterminado de NULL
. Este parámetro solo se especifica cuando el Agente de lectura de cola usa un trabajo existente en lugar de crear uno nuevo.
[ @publisher = ] N'publisher'
Especifica un publicador que no es de SQL Server. @publisher es sysname, con un valor predeterminado de NULL
.
@publisher no se debe usar al agregar una publicación a un publicador de SQL Server.
[ @allow_initialize_from_backup = ] N'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 nvarchar(5) y puede ser 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 (valor predeterminado) |
El valor predeterminado es true para una publicación en una topología de replicación punto a punto y false para todas las demás publicaciones. |
Para obtener más información, consulte Initialize a Transactional Subscription Without a Snapshot.
Advertencia
Para evitar que falten datos de suscriptor, al usar sp_addpublication
con @allow_initialize_from_backup = N'true'
, use @immediate_sync = N'true'
siempre .
[ @replicate_ddl = ] replicate_ddl
Indica si la publicación admite replicación de esquema. @replicate_ddl es int, con un valor predeterminado de para publicadores de 1
SQL Server y 0
para publicadores que no son de SQL Server.
1
indica que se replican las instrucciones del lenguaje de definición de datos (DDL) ejecutadas en el publicador.0
indica que las instrucciones DDL no se replican.
No se admite la replicación de esquemas para publicadores de Oracle.
Para 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 siguientes motivos.
Cuando se quita una columna,
sysarticlecolumns
se debe actualizar para evitar que se incluyan nuevas instrucciones DML, lo que provocaría un error en el agente de distribución. 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 podría no ser 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 nueva columna,
sysarticlecolumns
no incluye la nueva columna. Las instrucciones DML no intentan replicar datos para la nueva columna. Se respeta el parámetro porque la DDL es aceptable se realice o no la replicación.
[ @enabled_for_p2p = ] N'enabled_for_p2p'
Permite utilizar la publicación en una topología de replicación punto a punto. @enabled_for_p2p es nvarchar(5), con un valor predeterminado de false
. true
indica que la publicación admite la replicación punto a punto. Al establecer @enabled_for_p2p en true
, se aplican las restricciones siguientes:
- @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, consulte Replicación transaccional punto a punto.
[ @publish_local_changes_only = ] N'publish_local_changes_only'
Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
[ @enabled_for_het_sub = ] N'enabled_for_het_sub'
Permite que la publicación admita suscriptores que no son de SQL Server. @enabled_for_het_sub es nvarchar(5), con un valor predeterminado de false
. Un valor de true
significa que la publicación admite suscriptores que no son de SQL Server. Cuando @enabled_for_het_sub es true
, se aplican las restricciones siguientes:
- @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
niconcurrent
.
Para más información, consulte Non-SQL Server Subscribers.
[ @p2p_conflictdetection = ] N'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 nvarchar(5), con un valor predeterminado de false
. Para obtener más información, consulte Detección de conflictos punto a punto en 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 int, con un valor predeterminado de 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 usado en la topología. Para obtener una lista de identificadores que se usan, ejecute sp_help_peerconflictdetection.
[ @p2p_continue_onconflict = ] N'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 nvarchar(5), con un valor predeterminado de false
.
Precaución
Se recomienda usar el valor predeterminado de false
. Cuando esta opción se establece true
en , el Agente de distribución intenta converger datos en la topología aplicando la fila en conflicto del nodo que es el identificador de origen más alto. Este método no garantiza la convergencia. Debe asegurarse de que la topología sea coherente una vez detectado un conflicto. Para obtener más información, vea "Control de conflictos" en Detección de conflictos punto a punto en replicación punto a punto.
[ @allow_partition_switch = ] N'allow_partition_switch'
Especifica si ALTER TABLE...SWITCH
se pueden ejecutar instrucciones en la base de datos publicada. @allow_partition_switch es nvarchar(5), con un valor predeterminado de false
. Para obtener más información, vea Replicar tablas e índices con particiones.
[ @replicate_partition_switch = ] N'replicate_partition_switch'
Especifica si ALTER TABLE...SWITCH
las instrucciones que se ejecutan en la base de datos publicada deben replicarse en suscriptores. @replicate_partition_switch es nvarchar(5), con un valor predeterminado de NULL
. Esta opción solo es válida si @allow_partition_switch se establece en TRUE.
[ @allow_drop = ] N'allow_drop'
Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
[ @p2p_conflictdetection_policy = ] N'p2p_conflictdetection_policy'
Se aplica a: SQL Server 2019 (15.x) CU 13 y versiones posteriores.
@p2p_conflictdetection_policy es nvarchar(12) y puede ser uno de estos valores:
Valor | Descripción |
---|---|
originatorid (valor predeterminado) |
El agente de distribución detecta el conflicto y decide el ganador en función del identificador del originador, si p2p_continue_onconflict = N'true' es . De lo contrario, genera un error. |
lastwriter |
El agente de distribución detecta el conflicto y decide el ganador en función de la fecha y hora del último escritor si p2p_continue_onconflict = N'true' es . De lo contrario, genera un error. |
Nota:
Al especificar originatorid
, la detección de conflictos es la misma que la de SQL Server 2019 (15.x) CU 12 y versiones anteriores. Al especificar lastwriter
, SQL Server permite que los conflictos se resuelvan automáticamente en función de la escritura más reciente.
Valores de código de retorno
0
(correcto) o 1
(erróneo).
Comentarios
sp_addpublication
se usa en la replicación de instantáneas y la replicación transaccional.
Si existen varias publicaciones que publican el mismo objeto de base de datos, solo las publicaciones con un valor @replicate_ddl de 1
replica las ALTER TABLE
instrucciones DDL , ALTER VIEW
, ALTER PROCEDURE
, ALTER FUNCTION
y ALTER TRIGGER
. Sin embargo, todas las publicaciones que publican la columna quitada replican una ALTER TABLE DROP COLUMN
instrucción DDL.
Con la replicación DDL habilitada (@replicate_ddl = 1
) para una publicación, con el fin de realizar cambios de DDL no replicados en la publicación, sp_changepublication primero debe ejecutarse para establecer @replicate_ddl en .0
Una vez emitidas las instrucciones DDL no replicadas, sp_changepublication se puede volver a ejecutar para volver a activar la replicación DDL.
Ejemplos
-- 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 db_owner rol fijo de base de datos 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. Una cuenta de usuario que representa un grupo de Windows no es suficiente.
Contenido relacionado
- 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)
- Publicar datos y objetos de base de datos
- Procedimientos almacenados de replicación (Transact-SQL)