Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La replicación de mezcla debe inicializar tanto el publicador como el suscriptor antes de que los datos puedan fluir entre ellos. En este artículo se proporciona información sobre los pasos que se producen durante la inicialización.
Inicialización de la publicación
En la lista siguiente se detallan los pasos de inicialización de una publicación, que se producen cuando se ejecuta cada procedimiento almacenado enumerado o después de completar el Asistente para nueva publicación. La inicialización adicional se produce después de que el Agente de instantáneas se ejecute por primera vez para una publicación.
sp_replicationdboptionLa base de datos de publicación está marcada para la replicación. La base de datos no se puede quitar a menos que se quite la replicación.
Las tablas del sistema se agregan a la base de datos de publicación (a menos que ya exista una publicación de combinación en la base de datos). Para obtener una lista completa de las tablas del sistema, consulte la sección "Tablas del sistema creadas en las bases de datos de publicación y suscripción" de este artículo.
sp_addmergepublication- Las entradas para la publicación se agregan a las tablas del sistema.
sp_addpublication_snapshot- Se agrega una tarea de agente de instantáneas al sistema de agente de SQL Server. El nombre del trabajo tiene el formato
<Publisher>-<PublicationDatabase>-<Publication>-<Integer>.
- Se agrega una tarea de agente de instantáneas al sistema de agente de SQL Server. El nombre del trabajo tiene el formato
sp_addmergearticleCada objeto replicado está marcado para la replicación. El objeto no se puede eliminar a menos que se quite el artículo correspondiente de todas las publicaciones.
Las entradas de cada artículo se agregan a las tablas del sistema.
El resto de la inicialización de la base de datos de publicación se produce durante la ejecución inicial del Agente de instantáneas para una publicación. La base de datos de publicaciones no se reinicia durante las siguientes ejecuciones del agente de instantáneas. Si usa el Asistente para nueva publicación, la instantánea inicial se crea automáticamente después de completar el asistente. Si usa procedimientos almacenados, debe ejecutar el trabajo del agente o ejecutar el agente directamente. Para obtener más información sobre la ejecución de agentes, vea Iniciar y detener un Agente de replicación (SQL Server Management Studio) y Conceptos de ejecutables del Agente de replicación.
La primera vez que se ejecuta el agente de instantáneas para una publicación:
Se agrega una columna denominada
rowguida cada tabla publicada, a menos que la tabla ya tenga una columna de tipo de datos uniqueidentifier con elROWGUIDCOLconjunto de propiedades (en cuyo caso se usa esta columna). Larowguidcolumna se usa para identificar de forma única todas las filas de cada tabla publicada. Si la tabla se quita de la publicación, se quita larowguidcolumna; si se ha usado una columna existente para el seguimiento, la columna no se quita.Los objetos siguientes se crean en la base de datos de publicación para cada tabla publicada (todos los objetos se crean en el
dboesquema):Los desencadenadores de inserción, los desencadenadores de actualización y los desencadenadores de eliminación se agregan a las tablas publicadas para realizar un seguimiento de los cambios. Los desencadenadores se denominan con el formato
MSmerge_ins_<GUID>,MSmerge_upd_<GUID>yMSmerge_del_<GUID>. El valor GUID se deriva de la entrada para el artículo en la tabla del sistemasysmergearticles.Los procedimientos almacenados se crean para controlar las inserciones, las actualizaciones y las eliminaciones en las tablas publicadas y para realizar otras operaciones relacionadas con la replicación.
Las vistas se crean para administrar inserciones, actualizaciones, eliminaciones y filtrado.
Las tablas de conflictos se crean para almacenar información de conflictos. Las tablas de conflictos siguen el esquema de las tablas publicadas: se genera un script para cada tabla publicada y luego se utiliza ese script para crear la tabla de conflictos en la base de datos de la publicación. Las tablas de conflictos se denominan con el formato
dbo.MSmerge_conflict_<Publication>_<Article>.
Cada vez que se ejecuta el Agente de instantáneas, se crean los siguientes tipos de archivos (con sus extensiones de archivo correspondientes) para cada artículo de la base de datos de publicación:
Esquema (
.sch)Restricciones e índices (
.dri)Desencadenadores (
.trg)Datos de tabla del sistema (
.sys)Tablas de conflictos (
.cft)Datos (
.bcp): no se crean para publicaciones con filtros parametrizados.Si la publicación no usa ningún filtro con parámetros, la instantánea contiene los datos de las tablas publicadas en un conjunto de
.bcparchivos. Si la publicación usa filtros con parámetros (lo que es típico para las publicaciones de combinación), la instantánea inicial no contiene ningún dato. Los datos se proporcionan usando una instantánea de la partición de un suscriptor, la cual se describe en la sección siguiente.
Inicialización de una suscripción
Cada suscripción se inicializa cuando el agente de mezcla para la suscripción se ejecuta y copia la instantánea inicial en la base de datos de suscripciones. Además del esquema y los datos de los objetos replicados, la instantánea contiene las tablas del sistema, las vistas, los desencadenadores y los procedimientos almacenados que existen en la base de datos de publicación. También se copian una o dos tablas del sistema adicionales en la base de datos de suscripciones. Para obtener una lista completa de las tablas del sistema, consulte la sección Tablas del sistema creadas en las bases de datos de publicación y suscripción de este artículo. Si se reinicializa una suscripción, se sobrescriben todos los objetos replicados y los objetos del sistema de replicación.
Si ninguna de las tablas de la base de datos de publicaciones usa filtros parametrizados, se copiará la misma instantánea de publicación en cada suscriptor. Si se usan uno o varios filtros con parámetros, la forma en que se inicializa cada suscripción se rige por la siguiente lógica:
Si la ubicación de la instantánea se proporciona al agente de mezcla en la línea de comandos:
- Aplique la instantánea desde esta ubicación.
De lo contrario, si la instantánea se ha generado previamente:
- Recupere la ubicación de la instantánea de
MSmerge_dynamic_snapshotsen la base de datos de publicaciones y aplique la instantánea desde esa ubicación.
- Recupere la ubicación de la instantánea de
De lo contrario, si la publicación permite a los suscriptores iniciar instantáneas:
Si ya se ha generado una instantánea para otro suscriptor con la misma partición, aplique esa instantánea al suscriptor.
De lo contrario, genere y aplique una instantánea al suscriptor.
De lo contrario, inicialice el suscriptor usando declaraciones de
SELECTcontra las tablas de la publicación. Este enfoque es más lento que usar una instantánea para la partición del suscriptor.
Si la transferencia de instantáneas se interrumpe en cualquier momento, se reanuda automáticamente y no vuelve a enviar ningún archivo que ya se haya transferido por completo. La unidad de entrega del Agente de Instantáneas es el archivo bcp para cada artículo de publicación, por lo que los archivos que se entregan parcialmente deben ser entregados nuevamente en su totalidad. Sin embargo, reanudar la instantánea puede reducir significativamente la cantidad de datos transmitidos y garantizar la entrega de instantáneas oportuna incluso si la conexión no es confiable. Para obtener más información sobre cómo crear instantáneas, vea Filtros con parámetros: filtros de fila con parámetros.
Ubicación de la instantánea
La ubicación de la instantánea depende de: la ruta de acceso especificada para la ubicación de instantánea predeterminada o alternativa; si la publicación usa una ruta de acceso UNC o un recurso compartido FTP para la carpeta de instantáneas; y si la publicación usa filtros con parámetros. En estos ejemplos, supongamos que la ubicación de la carpeta de instantáneas es: : \\<MyComputer>\<MyFolder>
Si la publicación usa UNC, la primera parte de la ruta es:
\\<MyComputer>\<MyFolder>\unc\. Si usa FTP, es\\<MyComputer>\<MyFolder>\ftp\.Si la publicación utiliza UNC y no emplea filtros parametrizados, la ruta de acceso es
\\<MyComputer>\<MyFolder>\unc\<Publisher><Publicationdb><publication>Si la publicación utiliza UNC y emplea filtros con parámetros, la ubicación se determina en función de la ruta de acceso a la carpeta de instantáneas y los criterios de filtrado por filas parametrizados para la publicación. Por ejemplo, si el artículo se filtra mediante la
HOST_NAME()función y el valor deHOST_NAME()para la partición esSalesLaptop, la ruta de acceso a la instantánea de esa partición es\\<MyComputer>\<MyFolder>\unc\<Publisher><Publicationdb><publication>\SalesLaptop_12, donde12es el identificador utilizado internamente para la partición.
Tablas del sistema creadas en las bases de datos de publicación y suscripción
Las tablas siguientes se crean en la base de datos de publicación y en cada base de datos de suscripciones.
| Tabla | Descripción |
|---|---|
| MSdynamicsnapshotjobs | Contiene información sobre los trabajos de instantánea para publicaciones con filtros parametrizados. |
| MSdynamicsnapshotviews | Realiza un seguimiento de todas las vistas de instantáneas temporales creadas por el Agente de instantáneas. Lo usa el sistema para limpiar las visualizaciones en el caso de un apagado anómalo del Agente SQL Server o del Agente de Instantáneas. |
| MSmerge_altsyncpartners | Realiza un seguimiento de quiénes son los socios de sincronización actuales del publicador. |
| MSmerge_articlehistory | Realiza un seguimiento de los cambios realizados en los artículos durante una sesión de sincronización del Agente de mezcla, con una fila para cada artículo en el que se realizaron cambios. |
| MSmerge_conflicts_info | Realiza un seguimiento de los conflictos que se producen al sincronizar una suscripción con una publicación de mezcla. |
| MSmerge_contents | Contiene una fila para cada fila modificada en la base de datos actual desde que se publicó. El proceso de combinación usa esta tabla para determinar las filas que han cambiado. |
| MSmerge_current_partition_mappings | Contiene una fila para cada partición a la que pertenece una fila modificada determinada. |
| MSmerge_dynamic_snapshots | Rastrea la ubicación de la instantánea para cada partición definida para una publicación de mezcla. |
| MSmerge_errorlineage | Contiene filas que se han eliminado en el suscriptor, pero cuya eliminación no se ha propagado al publicador. |
| MSmerge_generation_partition_mappings | Realiza un seguimiento de si una generación determinada contiene los cambios pertinentes para una partición determinada. |
| MSmerge_genhistory | Contiene una fila para cada generación. Una generación es una colección de cambios que se entregan a un publicador o suscriptor. Las generaciones se cierran cada vez que se ejecuta el Agente de mezcla; Los cambios posteriores de una base de datos se agregan a una o varias generaciones abiertas. |
| MSmerge_history | Contiene filas de historial con descripciones detalladas de los resultados de las sesiones de trabajo anteriores del Agente de mezcla. |
| MSmerge_identity_range | Realiza un seguimiento de los intervalos numéricos asignados a las columnas de identidad para las suscripciones a publicaciones para las que la replicación gestiona automáticamente las asignaciones de intervalos. |
| MSmerge_metadataaction_request | Contiene una fila para cada acción de compensación necesaria. Una acción de compensación se usa para revertir un cambio en un nodo si se produjo un error en el cambio en otro nodo. |
| MSmerge_partition_groups | Contiene una fila para cada partición precalpuesta en una base de datos determinada. |
| MSmerge_past_partition_mappings | Contiene una fila para cada partición a la que una determinada fila modificada solía pertenecer, pero ya no pertenece. |
| MSmerge_replinfo | Contiene una fila para cada suscripción. En esta tabla se realiza un seguimiento de la información interna sobre las generaciones enviadas y recibidas. |
| MSmerge_sessions | Contiene filas de historial con los resultados de sesiones de trabajo anteriores del agente de mezcla. |
| MSmerge_settingshistory | Contiene un historial de cambios realizados en las propiedades de artículo y publicación, con una fila para cada cambio realizado. |
| MSmerge_tombstone | Contiene información sobre las filas eliminadas y permite que las eliminaciones se propaguen a otros suscriptores. |
| MSrepl_errors | Contiene información detallada sobre los errores del agente. |
| sysmergearticles | Contiene una fila para cada artículo de combinación. |
| sysmergepartitioninfo | Contiene información sobre las particiones de cada artículo, con una fila para cada artículo. |
| sysmergepartitioninfoview | Contiene información sobre la partición de los artículos de la tabla. |
| sysmergepublications | Contiene una fila por cada publicación de mezcla. |
| sysmergeschemaarticles | Rastrea artículos de solo esquema, como procedimientos almacenados. |
| sysmergeschemachange | Contiene información sobre los artículos publicados generados por el Agente de instantáneas. |
| sysmergesubscriptions | Contiene una fila para cada suscriptor. |
| sysmergesubsetfilters | Contiene información de filtro de unión para artículos con particiones. |
Además, la MSsnapshotdeliveryprogress tabla se crea en cada base de datos de suscripciones y la MSsubscription_properties tabla se crea en cada base de datos de suscripciones que usa una suscripción de extracción:
| Tabla | Descripción |
|---|---|
| MSsnapshotdeliveryprogress | Realiza un seguimiento de los archivos que se entregaron correctamente al suscriptor cuando se está aplicando una instantánea. Estos datos se usan para reanudar la entrega de archivos en caso de que el Agente de mezcla no entregue todos los archivos durante la sesión. |
| Propiedades_de_suscripción_MS | Contiene la información de parámetros necesaria para ejecutar agentes de replicación en el suscriptor |