Procedimientos recomendados de Azure SQL Data Sync
Se aplica a: Azure SQL Database
Importante
SQL Data Sync se retirará el 30 de septiembre de 2027. Considere la posibilidad de migrar a soluciones alternativas de replicación o sincronización de datos.
En este artículo, se describen los procedimientos recomendados para Azure SQL Data Sync.
Para obtener información general sobre SQL Data Sync, vea ¿Qué es SQL Data Sync para Azure?
Seguridad y fiabilidad
Agente cliente
- Instale el agente cliente con la cuenta de usuario con menos privilegios que tenga acceso al servicio de red.
- Instale el agente cliente en un servidor diferente del lugar en el que se instala SQL Server.
- No registre ninguna base de datos local con más de un agente.
- Evite esto aunque vaya a sincronizar tablas diferentes para distintos grupos de sincronización.
- Registrar una base de datos local con varios agentes cliente puede causar problemas al eliminar uno de los grupos de sincronización.
Cuentas de base de datos con los mínimos privilegios requeridos
Para la configuración de la sincronización:
- Permisos de SQL Server: CREAR/MODIFICAR TABLA, MODIFICAR BASE DE DATOS, CREAR PROCEDIMIENTO, SELECCIONAR/MODIFICAR ESQUEMA, CREAR TIPO. Estos permisos se incluyen (junto con otros permisos) en el rol de base de datos
ddl_admin
integrado. - En el nivel del grupo de recursos, es necesario pertenecer al rol Colaborador de base de datos SQL. Para más información, consulte Asignación de roles de Azure mediante Azure Portal. La pertenencia a roles más amplios como Colaborador o Propietario también funciona, si el rol ya está asignado.
- Los permisos en el nivel de suscripción no deberían ser necesarios, pero podrían proporcionar una manera simplificada (aunque no menos necesaria) de proporcionar los permisos necesarios para varias implementaciones de Azure Data Sync en una suscripción. Una API original en desuso requería estos permisos de RBAC de Azure, pero ya no debería estar en uso.
- "Microsoft.Sql/locations/syncMemberOperationResults/read"
- "Microsoft.Sql/locations/syncAgentOperationResults/read"
- "Microsoft.Sql/locations/syncGroupOperationResults/read"
- Permisos de SQL Server: CREAR/MODIFICAR TABLA, MODIFICAR BASE DE DATOS, CREAR PROCEDIMIENTO, SELECCIONAR/MODIFICAR ESQUEMA, CREAR TIPO. Estos permisos se incluyen (junto con otros permisos) en el rol de base de datos
Para la sincronización en curso.
- Permisos de SQL Server: permisos SELECCIONAR, INSERTAR, ACTUALIZAR y ELIMINAR en tablas de usuario que estén seleccionadas para la sincronización. Permiso EJECUTAR en los tipos de tabla definidos por el usuario.
- Permisos de SQL Server: permiso SELECCIONAR, INSERTAR, ACTUALIZAR y ELIMINAR en metadatos de sincronización y tablas de seguimiento creadas por el sistema. Permiso EJECUTAR en procedimientos almacenados creados por el servicio.
- El esquema
DataSync
se usa para objetos creados por el sistema en las bases de datos de centro y miembro. - Los esquemas
dss
yTaskHosting
se usan para objetos creados por el sistema en las bases de datos de metadatos de sincronización.
- El esquema
Para el desaprovisionamiento.
- Permisos de SQL Server: MODIFICAR en todas las tablas que forman parte de la sincronización; SELECCIONAR y ELIMINAR en las tablas de metadatos de sincronización; CONTROLAR en las tablas de seguimiento de la sincronización, los procedimientos almacenados y los tipos definidos por el usuario.
- Para la limpieza, quite los objetos creados por el sistema en los esquemas
DataSync
,dss
yTaskHosting
.
Azure SQL Database solo admite un único conjunto de credenciales. Para realizar estas tareas dentro de esta restricción, tenga en cuenta las siguientes opciones:
- Cambie las credenciales para las distintas fases (por ejemplo, utilice credencial1 para la configuración y credencial2 para la sincronización en curso).
- Cambie el permiso de las credenciales (es decir, cambie el permiso una vez configurada la sincronización).
Auditoría
Se recomienda habilitar la auditoría en el nivel de las bases de datos en los grupos de sincronización. Aprenda a habilitar la auditoría en la base de datos de Azure SQL o a habilitar la auditoría en la base de datos de SQL Server.
Configurar
Restricciones y consideraciones de la base de datos
Tamaño de base de datos
Al crear una nueva base de datos, establezca el tamaño máximo de forma que siempre sea mayor que la base de datos que implemente. Si no lo hace así, se producirá un error de sincronización. Aunque SQL Data Sync no permite el crecimiento automático, puede ejecutar el comando ALTER DATABASE
para aumentar el tamaño de la base de datos una vez creada. Asegúrese de que no se sale de los límites de tamaño de la base de datos.
Importante
SQL Data Sync almacena metadatos adicionales con cada base de datos. No olvide tener en cuenta estos metadatos al calcular el espacio necesario. La cantidad de sobrecarga adicional guarda relación con la cantidad de tráfico y con el ancho de las tablas (por ejemplo, las tablas estrechas necesitan más sobrecarga).
Restricciones y consideraciones de la tabla
Seleccionar tablas
No deben incluir en un grupo de sincronización todas las tablas que se encuentran en una base de datos. Las tablas que se incluyen en un grupo de sincronización afectan a la eficiencia y los costos. Incluya tablas y también las tablas que de ellas dependan en un grupo de sincronización solo si así lo requieren las necesidades empresariales.
Claves principales
Cada tabla de un grupo de sincronización debe tener una clave principal. SQL Data Sync no puede sincronizar una tabla que no tiene una clave principal.
Antes de usar SQL Data Sync en producción, compruebe el rendimiento de la sincronización inicial y en curso.
Las tablas vacías proporcionan el mejor rendimiento.
Las tablas vacías ofrecen el mejor rendimiento en el momento de la inicialización. Si la tabla de destino está vacía, las sincronización de datos utiliza la inserción masiva para cargar los datos. En caso contrario, la sincronización de datos realiza una comparación fila a fila y la inserción para comprobar si hay conflictos. Aunque, si el rendimiento no es un problema, puede configurar la sincronización entre tablas que ya contengan datos.
Aprovisionamiento de bases de datos de destino
SQL Data Sync permite aprovisionar automáticamente la base de datos básica.
En esta sección, se describen los límites del aprovisionamiento de SQL Data Sync.
Limitaciones del aprovisionamiento automático
SQL Data Sync tiene las siguientes limitaciones de aprovisionamiento automático:
- Seleccione solo las columnas creadas en la tabla de destino. Todas las columnas que no forman parte del grupo de sincronización no se aprovisionan en las tablas de destino.
- Los índices se crean únicamente para las columnas seleccionadas. Si el índice de la tabla de origen tiene columnas que no forman parte del grupo de sincronización, estos índices no se aprovisionan en las tablas de destino.
- Los índices de las columnas de tipo XML no se aprovisionan.
- Data Sync solo admite las dos propiedades de índice siguientes: Unique, Clustered/Non-Clustered. No se admiten otras propiedades de índice como IGNORE_DUP_KEY, WHERE filter_predicate, etc., y el índice de destino se aprovisiona sin estas propiedades incluso si el índice de origen las tiene establecidas.
- Las restricciones CHECK no se aprovisionan.
- Los desencadenadores existentes en las tablas de origen no se aprovisionan.
- No se crean vistas ni procedimientos almacenados en la base de datos de destino.
- Las acciones ON UPDATE CASCADE Y ON DELETE CASCADE en las restricciones clave externas no se vuelven a crear en las tablas de destino.
- Si tiene columnas decimales o numéricas con una precisión mayor a 28, SQL Data Sync puede encontrar un problema de desbordamiento de conversión durante la sincronización. Se recomienda que limite la precisión de las columnas decimales o numéricas a 28 o menos.
Recomendaciones
- Use la funcionalidad de aprovisionamiento automático de SQL Data Sync solo cuando vaya a probar el servicio.
- Para entornos de producción, aprovisione el esquema de base de datos.
Dónde encontrar la base de datos central
Escenario de empresa a la nube
Para minimizar la latencia, mantenga la base de datos central cerca de la mayor concentración del tráfico de la base de datos del grupo de sincronización.
Escenario de nube a nube
- Cuando todas las bases de datos de un grupo de sincronización están en un centro de datos, el concentrador debe estar en el mismo centro de datos. Esta configuración reduce la latencia y el costo de la transferencia de datos entre centros de datos.
- Cuando las bases de datos de un grupo de sincronización están en varios centros de datos, el concentrador debe estar en el mismo centro de datos que la mayoría de las bases de datos y del tráfico de la base de datos.
Escenarios combinados
Aplique las instrucciones anteriores a configuraciones de grupos de sincronización complejas, como aquellas en las que existe una combinación de escenarios de la empresa a la nube y de la nube a la nube.
Sync
Evitar una sincronización inicial lenta y costosa
En esta sección se describe la sincronización inicial de un grupo de sincronización. Obtenga información sobre cómo ayudar a evitar que una sincronización inicial tarde más tiempo y sea más costosa de lo necesario.
Funcionamiento de la sincronización inicial
Al crear un grupo de sincronización, comience con los datos en una sola base de datos. Si tiene datos en varias bases de datos, SQL Data Sync trata cada fila como un conflicto que hay que resolver. La resolución de conflictos hace que la sincronización inicial sea lenta. Si tiene datos en varias bases de datos, la sincronización inicial puede tardar entre varios días y varios meses, según el tamaño de la base de datos.
Si las bases de datos están en distintos centros de datos, cada fila debe desplazarse entre ellos. Esto aumenta el costo de una sincronización inicial.
Recomendación
Si es posible, comience con datos en una sola base de datos del grupo de sincronización.
Diseño para evitar bucles de sincronización
Un bucle de sincronización se produce cuando hay referencias circulares dentro de un grupo de sincronización. En ese caso, cada cambio realizado en una base de datos resulta interminable y se replica de forma circular a través de las bases de datos del grupo de sincronización.
Asegúrese de evitar los bucles de sincronización, ya que causan una degradación del rendimiento y podrían aumentar significativamente los costos.
Cambios que no se propagan
Razones por las que los cambios no se propagan
Puede que los cambios no se propaguen por alguno de los siguientes motivos:
- Incompatibilidad de esquemas o tipos de datos.
- Insertar valores NULL en columnas que no aceptan valores NULL.
- Infringir restricciones de claves principales.
¿Qué ocurre cuando los cambios no se propagan?
- Se muestra un estado de advertencia en el grupo de sincronización.
- Los detalles se encuentran en el visor de registro de la interfaz de usuario del portal.
- Si el problema no se resuelve en 45 días, la base de datos se convierte en obsoleta.
Nota:
Estos cambios no se propagan nunca. La única manera de recuperarse en este caso es volver a crear el grupo de sincronización.
Recomendación
Supervise el estado del grupo de sincronización y la base de datos con regularidad desde la interfaz del portal y de registro.
Mantenimiento
Evitar bases de datos y grupos de sincronización obsoletos
Un grupo de sincronización o una base de datos de un grupo de sincronización pueden llegar a estar obsoletos. Cuando el estado de un grupo de sincronización es obsoleto, deja de funcionar. Cuando el estado de la base de datos es obsoleto, se pueden perder datos. Es mejor evitar esta situación en lugar de intentar recuperarse de este error.
Evitar bases de datos obsoletas
El estado de la base de datos se establece en obsoleto cuando ha estado sin conexión durante cuarenta y cinco días o más. Para evitar el estado obsoleto en una base de datos, asegúrese de que ninguna de las bases de datos esté sin conexión durante cuarenta y cinco días o más.
Evitar grupos de sincronización obsoletos
El estado de un grupo de sincronización se establece en obsoleto cuando cualquier cambio en el grupo de sincronización no puede propagarse al resto del grupo de sincronización durante cuarenta y cinco días o más. Para evitar el estado obsoleto de un grupo de sincronización, compruebe periódicamente el registro de historial del grupo de sincronización. Asegúrese de que todos los conflictos se resuelvan y los cambios se propaguen correctamente en las bases de datos del grupo de sincronización.
Un grupo de sincronización puede producir un error al aplicar un cambio por alguno de estos motivos:
- Incompatibilidad de esquemas entre tablas.
- Incompatibilidad de datos entre tablas.
- Insertar una fila con un valor NULL en una columna que no admite valores NULL.
- Actualizar una fila con un valor que infringe una restricción de clave externa.
Para impedir grupos de sincronización obsoletos, haga lo siguiente:
- Actualice el esquema para permitir los valores incluidos en las filas con errores.
- Actualice los valores de la clave externa para incluir los valores incluidos en las filas con errores.
- Actualice los valores de datos en la fila con errores para que sean compatibles con el esquema o con las claves externas de la base de datos de destino.
Evitar problemas de cancelación del aprovisionamiento
En determinadas circunstancias, anular el registro de una base de datos con un agente cliente puede provocar errores de sincronización.
Escenario
- El grupo de sincronización A se ha creado con una instancia de SQL Database y una base de datos de SQL Server asociada al agente local 1.
- La misma base de datos local está registrada con el agente local 2 (este agente no está asociado a ningún grupo de sincronización).
- Al anular el registro de la base de datos local del agente local 2, se eliminan las tablas de seguimiento y de metadatos del grupo de sincronización A en la base de datos local.
- En las operaciones del grupo de sincronización A, se producirá el error: "La operación actual no se pudo completar porque la base de datos no está aprovisionada para la sincronización o no tiene permisos para las tablas de configuración de sincronización".
Solución
Para evitar esta situación, no registre una base de datos con más de un agente.
Para recuperarse de esta situación:
- Quite la base de datos de todos los grupos de sincronización a los que pertenezca.
- Vuelva a agregar la base de datos a cada uno de los grupos de sincronización de los que la ha quitado.
- Implemente cada grupo de sincronización afectado (esta acción aprovisiona la base de datos).
Modificación de un grupo de sincronización
No intente quitar una base de datos de un grupo de sincronización para después editar el grupo de sincronización sin implementar primero uno de los cambios.
En su lugar, primero quite una base de datos de un grupo de sincronización. A continuación, implemente el cambio y espere a que el desaprovisionamiento finalice. Una vez finalizado el desaprovisionamiento, puede editar el grupo de sincronización e implementar los cambios.
Si intenta quitar una base de datos para después modificar un grupo de sincronización sin implementar primero uno de los cambios, se produce un error en una de las dos operaciones. La interfaz del portal puede quedar en un estado incoherente. En este caso, actualice la página para restaurar el estado correcto.
Evitar el tiempo de espera de actualización del esquema
Si tiene un esquema complejo para la sincronización, es posible que experimente un "tiempo de espera de la operación" durante una actualización del esquema si la base de datos de metadatos de sincronización tiene una SKU inferior (ejemplo: básica).
Solución
Para mitigar este problema, considere la posibilidad de escalar verticalmente los recursos de la base de datos de metadatos de sincronización.
Contenido relacionado
Para más información acerca de SQL Data Sync, consulte:
- Introducción: Sincronización de datos entre varias bases de datos locales y en la nube con Azure SQL Data Sync
- Configuración de SQL Data Sync
- En el portal, Tutorial: Configuración de SQL Data Sync para sincronizar datos entre Azure SQL Database y SQL Server
- Con PowerShell
- Agente de sincronización de datos: Agente de sincronización de datos para Azure SQL Data Sync
- Supervisión: Monitor SQL Data Sync with Azure Monitor logs (Supervisión de SQL Data Sync con registros de Azure Monitor)
- Solución de problemas: Solución de problemas de Azure SQL Data Sync
- Actualización del esquema sincrónico
Para obtener más información sobre SQL Database, vea: