sp_addmergearticle (Transact-SQL)
Se aplica a: SQL Server Azure SQL Managed Instance
Agrega un artículo a una publicación de combinación existente. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_addmergearticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
, [ @source_object = ] N'source_object'
[ , [ @type = ] N'type' ]
[ , [ @description = ] N'description' ]
[ , [ @column_tracking = ] N'column_tracking' ]
[ , [ @status = ] N'status' ]
[ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
[ , [ @creation_script = ] N'creation_script' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @subset_filterclause = ] N'subset_filterclause' ]
[ , [ @article_resolver = ] N'article_resolver' ]
[ , [ @resolver_info = ] N'resolver_info' ]
[ , [ @source_owner = ] N'source_owner' ]
[ , [ @destination_owner = ] N'destination_owner' ]
[ , [ @vertical_partition = ] N'vertical_partition' ]
[ , [ @auto_identity_range = ] N'auto_identity_range' ]
[ , [ @pub_identity_range = ] pub_identity_range ]
[ , [ @identity_range = ] identity_range ]
[ , [ @threshold = ] threshold ]
[ , [ @verify_resolver_signature = ] verify_resolver_signature ]
[ , [ @destination_object = ] N'destination_object' ]
[ , [ @allow_interactive_resolver = ] N'allow_interactive_resolver' ]
[ , [ @fast_multicol_updateproc = ] N'fast_multicol_updateproc' ]
[ , [ @check_permissions = ] check_permissions ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @published_in_tran_pub = ] N'published_in_tran_pub' ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection' ]
[ , [ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution' ]
[ , [ @partition_options = ] partition_options ]
[ , [ @processing_order = ] processing_order ]
[ , [ @subscriber_upload_options = ] subscriber_upload_options ]
[ , [ @identityrangemanagementoption = ] N'identityrangemanagementoption' ]
[ , [ @delete_tracking = ] N'delete_tracking' ]
[ , [ @compensate_for_errors = ] N'compensate_for_errors' ]
[ , [ @stream_blob_columns = ] N'stream_blob_columns' ]
[ ; ]
Argumentos
[ @publication = ] N'publication'
Nombre de la publicación que contiene el artículo. @publication es sysname, sin ningún valor predeterminado.
[ @article = ] N'article'
Nombre del artículo. El nombre debe ser único en la publicación. @article es sysname, sin ningún valor predeterminado. @article debe estar en el equipo local que ejecuta SQL Server y debe cumplir las reglas de los identificadores.
[ @source_object = ] N'source_object'
Objeto de base de datos que se va a publicar. @source_object es sysname, sin ningún valor predeterminado. Para obtener más información sobre los tipos de objetos que se pueden publicar mediante la replicación de mezcla, vea Publicar datos y objetos de base de datos.
[ @type = ] N'type'
Tipo de artículo. @type es sysname, con un valor predeterminado de table
y puede ser uno de los siguientes valores.
Valor | Descripción |
---|---|
table (valor predeterminado) |
Tabla con esquema y datos. La replicación supervisa la tabla para determinar los datos que se van a replicar. |
func schema only |
Función con solo esquema. |
indexed view schema only |
Vista indizada con solo esquema. |
proc schema only |
Procedimiento almacenado con solo esquema. |
synonym schema only |
Sinónimo con solo esquema. |
view schema only |
Vista con solo esquema. |
[ @description = ] N'description'
Descripción del artículo. @description es nvarchar(255), con un valor predeterminado de NULL
.
[ @column_tracking = ] N'column_tracking'
Configuración del seguimiento de nivel de columna. @column_tracking es nvarchar(10), con un valor predeterminado de false
. false
activa el seguimiento de columnas. false
desactiva el seguimiento de columnas y deja la detección de conflictos en el nivel de fila. Si la tabla ya está publicada en otras publicaciones de combinación, debe utilizar el mismo valor de seguimiento por columna que utilizan los artículos existentes basados en esta tabla. Este parámetro es específico solamente de los artículos de tabla.
Nota:
Si se utiliza el seguimiento por fila en la detección de conflictos (valor predeterminado), la tabla base puede incluir un máximo de 1024 columnas, pero en el artículo deben filtrarse las columnas de forma que se publique un máximo de 246 columnas. Si se utiliza el seguimiento por columna, la tabla base puede incluir 246 columnas como máximo.
[ @status = ] N'status'
Estado del artículo. @status es nvarchar(10), con un valor predeterminado de unsynced
. Si active
es , se ejecuta el script de procesamiento inicial para publicar la tabla. Si unsynced
es , el script de procesamiento inicial para publicar la tabla se ejecuta la próxima vez que se ejecute el Agente de instantáneas.
[ @pre_creation_cmd = ] N'pre_creation_cmd'
Especifica qué debe hacer el sistema si la tabla existe en el suscriptor al aplicar la instantánea. @pre_creation_cmd es nvarchar(10) y puede ser uno de los siguientes valores.
Valor | Descripción |
---|---|
none |
Si la tabla ya existe en el suscriptor, no se lleva a cabo ninguna acción. |
delete |
Emite una eliminación basada en la cláusula WHERE del filtro de subconjunto. |
drop (valor predeterminado) |
Quita la tabla antes de volver a crearla. Necesario para admitir suscriptores de SQL Server Compact. |
truncate |
Trunca la tabla de destino. |
[ @creation_script = ] N'creation_script'
Ruta de acceso y nombre de un script de esquema de artículo opcional que se usa para crear el artículo en la base de datos de suscripciones. @creation_script es nvarchar(255), con un valor predeterminado de NULL
.
Nota:
Los scripts de creación no se ejecutan en suscriptores de SQL Server Compact.
[ @schema_option = ] schema_option
Mapa de bits de la opción de generación de esquemas para el artículo especificado. @schema_option es varbinary(8)y puede ser | (OR bit a bit) producto de uno o varios de estos valores.
Valor | Descripción |
---|---|
0x00 |
Deshabilita el scripting mediante el Agente de instantáneas y usa el script de precreación de esquema proporcionado definido en @creation_script. |
0x01 |
Genera la creación del objeto (CREATE TABLE , CREATE PROCEDURE , etc.). Este es el valor predeterminado en los artículos de procedimientos almacenados. |
0x10 |
Genera el índice clúster correspondiente. Incluso si no se establece esta opción, se generan índices relacionados con las restricciones y UNIQUE las claves principales si ya están definidos en una tabla publicada. |
0x20 |
Convierte los tipos de datos definidos por el usuario (UDT) en tipos de datos base en el suscriptor. Esta opción no se puede usar cuando hay una restricción CHECK o DEFAULT en una columna UDT, si una columna UDT forma parte de la clave principal o si una columna calculada hace referencia a una columna UDT. |
0x40 |
Genera los índices no clúster correspondientes. Incluso si no se establece esta opción, se generan índices relacionados con las restricciones y UNIQUE las claves principales si ya están definidos en una tabla publicada. |
0x80 |
PRIMARY KEY Replica las restricciones. Los índices relacionados con la restricción también se replican, incluso si las opciones 0x10 y 0x40 no están habilitadas. |
0x100 |
Replica los desencadenadores de usuario en un artículo de tabla, si se han definido. |
0x200 |
FOREIGN KEY Replica las restricciones. Si la tabla a la que se hace referencia no forma parte de una publicación, no se replican todas las FOREIGN KEY restricciones de una tabla publicada. |
0x400 |
CHECK Replica las restricciones. |
0x800 |
Replica los valores predeterminados. |
0x1000 |
Replica la intercalación de columna. |
0x2000 |
Replica las propiedades extendidas asociadas con el objeto de origen del artículo publicado. |
0x4000 |
UNIQUE Replica las restricciones. Los índices relacionados con la restricción también se replican, incluso si las opciones 0x10 y 0x40 no están habilitadas. |
0x8000 |
Esta opción no es válida para los publicadores que ejecutan SQL Server 2005 (9.x) y versiones posteriores. |
0x10000 |
CHECK Replica las restricciones para NOT FOR REPLICATION que las restricciones no se apliquen durante la sincronización. |
0x20000 |
FOREIGN KEY Replica las restricciones para NOT FOR REPLICATION que las restricciones no se apliquen durante la sincronización. |
0x40000 |
Replica grupos de archivos asociados con un índice o una tabla con particiones. |
0x80000 |
Replica el esquema de partición de una tabla con particiones. |
0x100000 |
Replica el esquema de partición de un índice con particiones. |
0x200000 |
Replica las estadísticas de tabla. |
0x400000 |
Replica los enlaces predeterminados. |
0x800000 |
Replica los enlaces de regla. |
0x1000000 |
Replica el índice de texto completo. |
0x2000000 |
Las colecciones de esquemas XML enlazadas a columnas xml no se replican. |
0x4000000 |
Replica índices en columnas xml . |
0x8000000 |
Crea los esquemas que aún no están presentes en el suscriptor. |
0x10000000 |
Convierte columnas xml en ntext en el suscriptor. |
0x20000000 |
Convierte tipos de datos de objetos grandes (nvarchar(max), varchar(max)y varbinary(max)) introducidos en SQL Server 2005 (9.x) en tipos de datos compatibles con SQL Server 2000 (8.x). |
0x40000000 |
Replica permisos. |
0x80000000 |
Intenta quitar dependencias a cualquier objeto que no forme parte de la publicación. |
0x100000000 |
Use esta opción para replicar el FILESTREAM atributo si se especifica en columnas varbinary(max). No especifique esta opción si va a replicar tablas en suscriptores de SQL Server 2005 (9.x). No se admite la replicación de tablas que tienen columnas FILESTREAM en suscriptores de SQL Server 2000 (8.x), independientemente de cómo se establezca esta opción de esquema. Consulte la opción 0x800000000 relacionada . |
0x200000000 |
Convierte los tipos de datos de fecha y hora (fecha, hora, datetimeoffset y datetime2) introducidos en SQL Server 2008 (10.0.x) en tipos de datos compatibles con versiones anteriores de SQL Server. |
0x400000000 |
Replica la opción de compresión para los datos y los índices. Para obtener más información, consulte Compresión de datos. |
0x800000000 |
Establezca esta opción para almacenar los datos de FILESTREAM en su propio grupo de archivos en el suscriptor. Si no se establece esta opción, los datos FILESTREAM se almacenan en el grupo de archivos predeterminado. La replicación no crea grupos de archivos; Por lo tanto, si establece esta opción, debe crear el grupo de archivos antes de aplicar la instantánea en el suscriptor. Para obtener más información sobre cómo crear objetos antes de aplicar la instantánea, vea Ejecutar scripts antes y después de aplicar la instantánea. Consulte la opción 0x100000000 relacionada . |
0x1000000000 |
Convierte los tipos definidos por el usuario (UDT) de Common Language Runtime (CLR) en varbinary(max) para que las columnas de tipo UDT se puedan replicar en suscriptores que ejecutan SQL Server 2005 (9.x). |
0x2000000000 |
Convierte el tipo de datos hierarchyid en varbinary(max) para que las columnas de tipo hierarchyid se puedan replicar en suscriptores que ejecutan SQL Server 2005 (9.x). Para obtener más información sobre cómo usar columnas hierarchyid en tablas replicadas, consulte referencia de método de tipo de datos hierarchyid. |
0x4000000000 |
Replica los índices filtrados de la tabla. Para obtener más información sobre los índices filtrados, vea Crear índices filtrados. |
0x8000000000 |
Convierte los tipos de datos geography y geometry en varbinary(max) para que las columnas de estos tipos se puedan replicar en suscriptores que ejecutan SQL Server 2005 (9.x). |
0x10000000000 |
Replica índices en columnas de tipo geography y geometry. |
Si este valor es NULL
, el sistema genera automáticamente una opción de esquema válida para el artículo. En la tabla de opciones Esquema predeterminado se muestra el valor elegido en función del tipo de artículo. Además, no todos los valores de @schema_option son válidos para cada tipo de replicación y tipo de artículo. En la tabla de opciones Esquema válido se muestran las opciones que se pueden especificar para un tipo de artículo determinado.
Nota:
El parámetro @schema_option solo afecta a las opciones de replicación de la instantánea inicial. Una vez generado el esquema inicial por el Agente de instantáneas y aplicado en el suscriptor, la replicación del esquema de publicación cambia al suscriptor en función de las reglas de replicación de cambios de esquema y la configuración de parámetro @replicate_ddl especificada en sp_addmergepublication. Para más información, vea Realizar cambios de esquema en bases de datos de publicaciones.
[ @subset_filterclause = ] N'subset_filterclause'
Cláusula WHERE que especifica el filtrado horizontal de un artículo de tabla sin la palabra WHERE incluida. @subset_filterclause es nvarchar(1000) con un valor predeterminado de una cadena vacía.
Importante
Por motivos de rendimiento, se recomienda no aplicar funciones a nombres de columna en cláusulas de filtro de fila con parámetros, como LEFT([MyColumn]) = SUSER_SNAME()
. Si usa HOST_NAME en una cláusula de filtro e invalida el HOST_NAME
valor, es posible que tenga que convertir tipos de datos mediante CONVERT. Para obtener más información sobre los procedimientos recomendados para este caso, vea la sección "Invalidar el valor de HOST_NAME() en Filtros con parámetros: filtros de fila con parámetros.
[ @article_resolver = ] N'article_resolver'
Solucionador basado en COM que se usa para resolver conflictos en el artículo de tabla o el ensamblado de .NET Framework invocado para ejecutar lógica de negocios personalizada en el artículo de tabla. @article_resolver es nvarchar(255), con un valor predeterminado de NULL
. Los valores disponibles para este parámetro se enumeran en Solucionadores personalizados de Microsoft. Si el valor proporcionado no es uno de los solucionadores de Microsoft, SQL Server usa el solucionador especificado en lugar del solucionador proporcionado por el sistema. Use sp_enumcustomresolvers
para enumerar la lista de solucionadores personalizados disponibles. Para obtener más información, vea Ejecutar lógica de negocios durante la sincronización de mezcla y replicación de mezcla avanzada: detección y resolución de conflictos.
[ @resolver_info = ] N'resolver_info'
Se usa para especificar información adicional requerida por un solucionador personalizado. Algunos de los solucionadores de Microsoft requieren una columna proporcionada como entrada para el solucionador. @resolver_info es nvarchar(517), con un valor predeterminado de NULL
. Para obtener más información, vea Conflictos de replicación de mezcla avanzada: solucionadores basados en COM.
[ @source_owner = ] N'source_owner'
Nombre del propietario del @source_object. @source_owner es sysname, con un valor predeterminado de NULL
. Si NULL
es , se supone que el usuario actual es el propietario.
[ @destination_owner = ] N'destination_owner'
Propietario del objeto en la base de datos de suscripciones, si no dbo
es . @destination_owner es sysname, con un valor predeterminado de NULL
. Si NULL
es , dbo
se supone que es el propietario.
[ @vertical_partition = ] N'vertical_partition'
Habilita y deshabilita el filtrado de columnas en un artículo de tabla. @vertical_partition es nvarchar(5), con un valor predeterminado de false
.
false
indica que no hay ningún filtrado vertical y publica todas las columnas.false
borra todas las columnas excepto la clave principal declarada yROWGUID
las columnas. Las columnas se agregan mediantesp_mergearticlecolumn
.
[ @auto_identity_range = ] N'auto_identity_range'
Habilita y deshabilita el control automático de intervalos de identidad para este artículo de tabla en una publicación en el momento en que se crea. @auto_identity_range es nvarchar(5), con un valor predeterminado de NULL
. false
habilita el control automático del intervalo de identidades, mientras false
lo deshabilita.
Nota:
Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts. Debe usar @identityrangemanagementoption para especificar las opciones de administración del intervalo de identidades. Para más información, vea Replicar columnas de identidad.
[ @pub_identity_range = ] pub_identity_range
Controla el tamaño del intervalo de identidad asignado a un suscriptor con una suscripción de servidor cuando se utiliza la administración automática de intervalos de identidad. Este rango de identidad se reserva para que un suscriptor de republicación pueda realizar asignaciones a sus propios suscriptores. @pub_identity_range es bigint, con un valor predeterminado de NULL
. Debe especificar este parámetro si @identityrangemanagementoption es auto
o si @auto_identity_range es false
.
[ @identity_range = ] identity_range
Controla el tamaño del rango de identidad asignado al publicador y al suscriptor cuando se utiliza el control automático de rangos de identidad. @identity_range es bigint, con un valor predeterminado de NULL
. Debe especificar este parámetro si @identityrangemanagementoption es auto
o si @auto_identity_range es false
.
Nota:
@identity_range controla el tamaño del intervalo de identidad al volver a publicar suscriptores mediante versiones anteriores de SQL Server.
[ @threshold = ] umbral
Valor de porcentaje que controla cuándo el Agente de mezcla asigna un nuevo intervalo de identidad. Cuando se usa el porcentaje de valores especificados en @threshold, el Agente de mezcla crea un nuevo intervalo de identidades. @threshold es int, con un valor predeterminado de NULL
. Debe especificar este parámetro si @identityrangemanagementoption es auto
o si @auto_identity_range es false
.
[ @verify_resolver_signature = ] verify_resolver_signature
Especifica si una firma digital se comprueba antes de utilizar un solucionador en la replicación de mezcla. @verify_resolver_signature es int, con un valor predeterminado de 1
.
0
especifica que la firma no se comprueba.1
especifica que la firma se comprueba para ver si procede de un origen de confianza.
[ @destination_object = ] N'destination_object'
Nombre del objeto en la base de datos de suscripciones. @destination_object es sysname, con un valor predeterminado de lo que está en @source_object. Este parámetro se puede especificar únicamente si el artículo es de solo esquema, como procedimientos almacenados, vistas y UDF. Si el artículo especificado es un artículo de tabla, el valor de @source_object invalida el valor de @destination_object.
[ @allow_interactive_resolver = ] N'allow_interactive_resolver'
Habilita o deshabilita el uso del solucionador interactivo en un artículo. @allow_interactive_resolver es nvarchar(5), con un valor predeterminado de false
. false
habilita el uso del Solucionador interactivo en el artículo; false
la deshabilita.
Nota:
Los suscriptores de SQL Server Compact no admiten la resolución interactiva.
[ @fast_multicol_updateproc = ] N'fast_multicol_updateproc'
Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts.
[ @check_permissions = ] check_permissions
Mapa de bits de los permisos de nivel de tabla que se comprueban cuando el Agente de mezcla aplica cambios al publicador. Si la cuenta de inicio de sesión o usuario del publicador usada por el proceso de combinación no tiene los permisos de tabla correctos, los cambios no válidos se registran como conflictos. @check_permissions es int y puede ser | (OR bit a bit) producto de uno o varios de los valores siguientes.
Valor | Descripción |
---|---|
0x00 (valor predeterminado) |
No se comprueban los permisos. |
0x10 |
Comprueba los permisos en el publicador antes de cargar las operaciones de inserción creadas en un suscriptor. |
0x20 |
Comprueba los permisos en el publicador antes de cargar las operaciones de actualización creadas en un suscriptor. |
0x40 |
Comprueba los permisos en el publicador antes de cargar las operaciones de eliminación creadas en un suscriptor. |
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Confirma que la acción realizada por este procedimiento almacenado podría invalidar una instantánea existente. @force_invalidate_snapshot es bit, con un valor predeterminado de 0
.
0
especifica que agregar un artículo no hace que la instantánea no sea válida. Si el procedimiento almacenado detecta que el cambio requiere una nueva instantánea, se producirá un error y no se realizarán cambios.1
especifica que agregar un artículo podría hacer que la instantánea no sea válida y, si hay suscripciones existentes que requieren una nueva instantánea, concede permiso para que la instantánea existente se marque como obsoleta y se genere una nueva instantánea. @force_invalidate_snapshot se establece en1
al agregar un artículo a una publicación con una instantánea existente.
[ @published_in_tran_pub = ] N'published_in_tran_pub'
Indica que un artículo de una publicación de combinación también se publica en una publicación transaccional. @published_in_tran_pub es nvarchar(5), con un valor predeterminado de false
. false
especifica que el artículo también se publica en una publicación transaccional.
[ @force_reinit_subscription = ] force_reinit_subscription
Confirma que la acción realizada por este procedimiento almacenado puede requerir la reinicialización de las suscripciones existentes. @force_reinit_subscription es bit, con un valor predeterminado de 0
.
0
especifica que agregar un artículo no hace que se reinicialice la suscripción. Si el procedimiento almacenado detecta que el cambio requiere que se reinicialicen las suscripciones existentes, se produce un error y no se realizan cambios.1
significa que los cambios realizados en el artículo de combinación hacen que se reinicialicen las suscripciones existentes y se concede permiso para que se produzca la reinicialización de la suscripción. @force_reinit_subscription se establece1
en cuando @subset_filterclause especifica un filtro de fila con parámetros.
[ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection'
Especifica el nivel de detección de conflictos para un artículo que es un miembro de un registro lógico. @logical_record_level_conflict_detection es nvarchar(5), con un valor predeterminado de false
.
false
especifica que se detecta un conflicto si se realizan cambios en cualquier parte del registro lógico.false
especifica que la detección de conflictos predeterminada se usa según lo especificado por @column_tracking. Para más información, vea Agrupar cambios en filas relacionadas con registros lógicos.
Nota:
Dado que los suscriptores de SQL Server Compact no admiten registros lógicos, debe especificar un valor de false
para que @logical_record_level_conflict_detection admita estos suscriptores.
[ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution'
Especifica el nivel de resolución de conflictos para un artículo que es un miembro de un registro lógico. @logical_record_level_conflict_resolution es nvarchar(5), con un valor predeterminado de false
.
false
especifica que todo el registro lógico ganador sobrescribe el registro lógico que pierde.false
especifica que las filas ganadoras no están restringidas al registro lógico.
Si @logical_record_level_conflict_detection es false
, @logical_record_level_conflict_resolution también debe establecerse false
en . Para más información, vea Agrupar cambios en filas relacionadas con registros lógicos.
Nota:
Dado que los suscriptores de SQL Server Compact no admiten registros lógicos, debe especificar un valor de false
para que @logical_record_level_conflict_resolution admita estos suscriptores.
[ @partition_options = ] partition_options
Define el modo en el que se realiza la partición de los datos en el artículo, lo que permite optimizaciones de rendimiento cuando todas las filas pertenecen solamente a una partición o solamente a una suscripción. @partition_options es tinyint y puede ser uno de los siguientes valores.
Valor | Descripción |
---|---|
0 (valor predeterminado) |
El filtrado del artículo es estático o no produce un subconjunto único de datos para cada partición, es decir, una partición "superpuesta". |
1 |
Las particiones se superponen y las actualizaciones del lenguaje de manipulación de datos (DML) realizadas en el suscriptor no pueden cambiar la partición a la que pertenece una fila. |
2 |
El filtro para el artículo produce particiones no superpuestas, pero varios suscriptores pueden recibir la misma partición. |
3 |
El filtro para el artículo produce particiones no superpuestas que son exclusivas para cada suscripción. |
Nota:
Si la tabla de origen de un artículo ya está publicada en otra publicación, el valor de @partition_options debe ser el mismo para ambos artículos.
[ @processing_order = ] processing_order
Indica el orden de procesamiento de los artículos en una publicación de mezcla. @processing_order es int, con un valor predeterminado de 0
. 0
especifica que el artículo no está ordenado y cualquier otro valor representa el valor ordinal del orden de procesamiento de este artículo. Los artículos se procesan en orden desde el valor menor al mayor. Si dos artículos tienen el mismo valor, el orden de procesamiento viene determinado por el orden del alias del artículo en la tabla del sistema sysmergearticles . Para más información, vea Specify merge replication properties (Especificación de propiedades de replicación de mezcla).
[ @subscriber_upload_options = ] subscriber_upload_options
Define las restricciones en actualizaciones realizadas en el suscriptor con una suscripción de cliente. Para más información, vea Optimizar el rendimiento de la replicación de mezcla con artículos de solo descarga. @subscriber_upload_options es tinyint y puede ser uno de los siguientes valores.
Valor | Descripción |
---|---|
0 (valor predeterminado) |
Sin restricciones. Los cambios realizados en el suscriptor se cargan en el publicador. |
1 |
Los cambios se permiten en el suscriptor, pero no se cargan en el publicador. |
2 |
Los cambios no se permiten en el suscriptor. |
Cambiar @subscriber_upload_options requiere que la suscripción se reinicialice llamando a sp_reinitmergepullsubscription.
Nota:
Si la tabla de origen de un artículo ya está publicada en otra publicación, el valor de @subscriber_upload_options debe ser el mismo para ambos artículos.
[ @identityrangemanagementoption = ] N'identityrangemanagementoption'
Especifica cómo se controla el rango de identidad para el artículo. @identityrangemanagementoption es nvarchar(10) y puede ser uno de los siguientes valores.
Valor | Descripción |
---|---|
none |
Deshabilita la administración de intervalos de identidad. |
manual |
Marca la columna de identidad utilizando NOT FOR REPLICATION para habilitar la administración manual de intervalos de identidad. |
auto |
Especifica la administración automática de intervalos de identidad. |
NULL (valor predeterminado) |
El valor predeterminado es none cuando el valor de @auto_identity_range no true es . |
Para la compatibilidad con versiones anteriores, cuando el valor de @identityrangemanagementoption es NULL
, se comprueba el valor de @auto_identity_range . Sin embargo, cuando el valor de @identityrangemanagementoption no NULL
es , se omite el valor de @auto_identity_range . Para más información, vea Replicar columnas de identidad.
[ @delete_tracking = ] N'delete_tracking'
Indica si se replican las eliminaciones. @delete_tracking es nvarchar(5), con un valor predeterminado de true
. false
indica que las eliminaciones no se replican e true
indica que se replican las eliminaciones, que es el comportamiento habitual para la replicación de mezcla. Cuando @delete_tracking se establece false
en , las filas eliminadas en el suscriptor deben quitarse manualmente en el publicador y las filas eliminadas en el publicador deben quitarse manualmente en el suscriptor.
Importante
Establecer @delete_tracking para dar lugar a false
una no convergencia. Si la tabla de origen de un artículo ya está publicada en otra publicación, el valor de @delete_tracking debe ser el mismo para ambos artículos.
Nota:
@delete_tracking opciones no se pueden establecer mediante el Asistente para nueva publicación ni el cuadro de diálogo Propiedades de la publicación.
[ @compensate_for_errors = ] N'compensate_for_errors'
Indica si se llevan a cabo acciones de compensación cuando se producen errores durante la sincronización. @compensate_for_errors es nvarchar(5), con un valor predeterminado de false
. Cuando se establece true
en , los cambios que no se pueden aplicar en un suscriptor o publicador durante la sincronización siempre conducen a acciones de compensación para deshacer el cambio; sin embargo, un suscriptor configurado incorrectamente que genera un error puede provocar cambios en otros suscriptores y publicadores para deshacerse. false
deshabilita estas acciones de compensación; sin embargo, los errores se siguen registrando como con la compensación y las combinaciones posteriores continúan intentando aplicar los cambios hasta que se realicen correctamente.
Importante
Aunque parezca que los datos de las filas afectadas no tengan convergencia, en cuanto trate los errores, se podrán aplicar los cambios y los datos convergerán. Si la tabla de origen de un artículo ya está publicada en otra publicación, el valor de @compensate_for_errors debe ser el mismo para ambos artículos.
[ @stream_blob_columns = ] N'stream_blob_columns'
Especifica que se utilice una optimización del flujo de datos al replicar columnas de objetos grandes binarios. @stream_blob_columns es nvarchar(5), con un valor predeterminado de false
. true
significa que se intentará la optimización. @stream_blob_columns se establece en true cuando FILESTREAM está habilitado. Esto permite que la replicación de datos FILESTREAM se realice de forma óptima y que se reduzca el uso de memoria. Para forzar que los artículos de tabla FILESTREAM no usen streaming de blobs, use sp_changemergearticle
para establecer @stream_blob_columns en false.
Importante
Habilitar esta optimización de memoria puede reducir el rendimiento de la Agente de mezcla durante la sincronización. Esta opción solo se debe utilizar al replicar columnas que contienen megabytes de datos.
Nota:
Ciertas funcionalidades de replicación de mezcla, como los registros lógicos, pueden impedir que se use la optimización del flujo al replicar objetos binarios grandes incluso con @stream_blob_columns establecido en true
.
Valores de código de retorno
0
(correcto) o 1
(erróneo).
Comentarios
sp_addmergearticle
se usa en la replicación de mezcla.
Al publicar objetos, sus definiciones se copian en los suscriptores. Si va a publicar un objeto de base de datos que depende de uno o más objetos, debe publicar todos los objetos a los que se hace referencia. Por ejemplo, si publica una vista que depende de una tabla, también debe publicar la tabla.
Si especifica un valor de 3
para @partition_options:
Solo puede haber una sola suscripción para cada partición de datos de ese artículo. Si se crea una segunda partición en la que el criterio de filtrado de la nueva suscripción se resuelve en la misma partición que la suscripción existente, se quitará la suscripción existente.
Los metadatos se limpian cada vez que se ejecuta el Agente de mezcla y la instantánea con particiones expira más rápidamente. Al utilizar esta opción, debe considerar la habilitación de la instantánea con particiones solicitada por el suscriptor. Para más información, consulte Crear una instantánea para una publicación de mezcla con filtros con parámetros.
Si agrega un artículo con un filtro horizontal estático, mediante @subset_filterclause, a una publicación existente con artículos que tienen filtros parametrizados, se deben reinicializar las suscripciones.
Al especificar @processing_order, se recomienda dejar huecos entre los valores de orden de artículo, lo que facilita el establecimiento de nuevos valores en el futuro. Por ejemplo, si tiene tres artículos, , y , establezca @processing_order en 10
, 20
y 30
, en lugar 1
de , 2
y 3
.Article3
Article2
Article1
Para más información, vea Specify merge replication properties (Especificación de propiedades de replicación de mezcla).
Tabla de opciones de esquema predeterminada
En esta tabla se describe el valor predeterminado que establece el procedimiento almacenado, si se especifica un NULL
valor para @schema_option, que depende del tipo de artículo.
Tipo de artículo | Valor de la opción de esquema |
---|---|
func schema only |
0x01 |
indexed view schema only |
0x01 |
proc schema only |
0x01 |
table |
0x0C034FD1 - Publicaciones compatibles con SQL Server 2005 (9.x) y versiones posteriores con una instantánea en modo nativo.0x08034FF1 - PUBLICACIONES compatibles con SQL Server 2005 (9.x) y versiones posteriores con una instantánea del modo de caracteres. |
view schema only |
0x01 |
Nota:
Si la publicación admite versiones anteriores de SQL Server, la opción de esquema predeterminada para table
es 0x30034FF1
.
Tabla de opciones de esquema válida
En la tabla siguiente se describen los valores permitidos @schema_option en función del tipo de artículo.
Tipo de artículo | Valores de las opciones de esquema |
---|---|
func schema only |
0x01 y 0x2000 |
indexed view schema only |
0x01 , 0x040 , 0x0100 , 0x2000 , 0x40000 , 0x1000000 , y 0x200000 |
proc schema only |
0x01 y 0x2000 |
table |
Todas las opciones. |
view schema only |
0x01 , 0x040 , 0x0100 , 0x2000 , 0x40000 , 0x1000000 , y 0x200000 |
Ejemplos
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesOrderHeader';
SET @table3 = N'SalesOrderDetail';
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';
-- Add a filtered article for the Employee table.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_object = @table1,
@type = N'table',
@source_owner = @hrschema,
@schema_option = 0x0004CF1,
@description = N'article for the Employee table',
@subset_filterclause = @filterclause;
-- Add an article for the SalesOrderHeader table that is filtered
-- based on Employee and horizontally filtered.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_object = @table2,
@type = N'table',
@source_owner = @salesschema,
@vertical_partition = N'true',
@schema_option = 0x0034EF1,
@description = N'article for the SalesOrderDetail table';
-- Add an article for the SalesOrderDetail table that is filtered
-- based on SaledOrderHeader.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table3,
@source_object = @table3,
@source_owner = @salesschema,
@description = 'article for the SalesOrderHeader table',
@identityrangemanagementoption = N'auto',
@pub_identity_range = 100000,
@identity_range = 100,
@threshold = 80,
@schema_option = 0x0004EF1;
-- Add all columns to the SalesOrderHeader article.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Remove the credit card Approval Code column.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@column = N'CreditCardApprovalCode',
@operation = N'drop',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between Employee and SalesOrderHeader.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table2,
@filtername = N'SalesOrderHeader_Employee',
@join_articlename = @table1,
@join_filterclause = N'Employee.BusinessEntityID = SalesOrderHeader.SalesPersonID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table3,
@filtername = N'SalesOrderDetail_SalesOrderHeader',
@join_articlename = @table2,
@join_filterclause = N'SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
Permisos
Debe pertenecer al rol fijo de servidor sysadmin o al rol fijo de base de datos db_owner .