Consideraciones acerca de la replicación de mezcla

Existen diversas consideraciones respecto a la replicación de mezcla:

  • La adición de una columna uniqueidentifier a la tabla publicada.

  • Columnas del tipo marca de tiempo.

  • Tipos de datos de objetos grandes (LOB).

  • Datos de inserción masiva en tablas publicadas.

  • Niveles de compatibilidad de publicación. Para obtener más información, vea la sección sobre el nivel de compatibilidad de las publicaciones de mezcla en el tema Usar varias versiones de SQL Server en una topología de replicación.

Adición de la columna uniqueidentifier

La replicación de mezcla utiliza una columna de identificador único global (GUID) para identificar cada fila durante el proceso de replicación de mezcla. Si una tabla publicada no tiene una columna uniqueidentifier con la propiedad ROWGUIDCOL y un índice único, la replicación agrega una. Asegúrese de que las instrucciones SELECT e INSERT a las que hacen referencia las tablas publicadas utilizan listas de columnas. Si una tabla ya no se publica y la replicación ha agregado la columna, ésta se quita; si la columna ya existía, no se quita.

Columnas del tipo marca de tiempo

La replicación de mezcla admite columnas del tipo marca de tiempo. La columna del tipo marca de tiempo se replica, pero no los valores literales de marca de tiempo. Los valores de marca de tiempo se generan otra vez al aplicar la instantánea en el suscriptor. Puesto que los valores de marca de tiempo se vuelven a generar en el suscriptor, las columnas del tipo marca de tiempo se filtran al realizar la validación de artículos.

Tipos de datos de objetos grandes (LOB)

Si una tabla publicada incluye LOB, se recomienda que especifique el valor TRUE en el parámetro @stream_blob_columns de sp_addmergearticle (Transact-SQL). Si no se especifica TRUE, todo el LOB debe generarse en memoria en el publicador, lo que puede provocar que el publicador agote la RAM si el LOB es muy grande.

Nota importanteImportante

Habilitar esta optimización de memoria puede perjudicar el rendimiento del agente de mezcla durante la sincronización. Esta opción se debería usar sólo cuando se repliquen columnas que contengan megabytes de datos.

Las actualizaciones en las columnas text, ntext e image se replican sólo si la columna ha sido actualizada explícitamente por una instrucción UPDATE, porque provoca que se active un desencadenador que actualiza los metadatos y garantiza que la transacción se propague a otros suscriptores. El uso de las operaciones WRITETEXT y UPDATETEXT no propaga por sí solo la modificación a otros sitios. Si la aplicación utiliza WRITETEXT y UPDATETEXT para actualizar columnas text o ntext, agregue explícitamente una instrucción UPDATE ficticia a continuación de las operaciones WRITETEXT o UPDATETEXT, dentro de la misma transacción, para activar el desencadenador y garantizar que la modificación se propague a los demás sitios. Para obtener más información acerca de estos tipos de datos, vea ntext, text e image (Transact-SQL).

Nota

Se recomienda utilizar los tipos de datos varchar(max), nvarchar(max) y varbinary(max) en vez de los tipos de datos text, ntext e image, respectivamente.

Insertar datos de forma masiva en tablas publicadas

La replicación de mezcla realiza el seguimiento de los cambios en tablas publicadas mediante desencadenadores y tablas del sistema. Si realiza una inserción de datos masiva con la utilidad bcp o el comando BULK INSERT, los desencadenadores no se activan de forma predeterminada. Si los desencadenadores no se activan, no se realiza el seguimiento de las inserciones y tampoco se propagan a otros nodos. Para asegurarse de que se realiza el seguimiento de los cambios, se recomienda que utilice uno de los siguientes métodos cuando ejecute inserciones masivas:

  • Utilice la opción FIRE_TRIGGERS en la utilidad bcp o el comando BULK INSERT. Esta opción garantiza que los desencadenadores se activan de igual forma que en una operación de inserción típica. Para obtener más información, vea bcp (utilidad) y BULK INSERT (Transact-SQL).

  • Ejecute el procedimiento almacenado sp_addtabletocontents después de realizar la inserción masiva. Este procedimiento inserta en las tablas del sistema las referencias para las filas de una tabla origen que no están incluidas actualmente. Para obtener más información, vea sp_addtabletocontents (Transact-SQL).