SQL Server: Tipos de Dato, Objetos y Operaciones Soportados
Obtenga información sobre la asistencia técnica de Oracle GoldenGate en la base de datos de SQL Server.
Con Oracle GoldenGate for SQL Server, soporta la captura y entrega de datos transaccionales y de carga inicial para las versiones de base de datos de SQL Server soportadas.
Oracle GoldenGate for SQL Server soporta la asignación, el filtrado y la transformación de datos de origen, a menos que se indique lo contrario en este documento, así como la replicación de datos derivados de otras bases de datos de origen soportadas por Oracle GoldenGate en bases de datos de SQL Server.
Requisitos de Instancia
-
El nombre del servidor SQL Server (
@@SERVERNAME) no debe serNULL. -
(Extracción) Para que Oracle GoldenGate capture datos transaccionales, el agente de SQL Server debe estar en ejecución en la instancia de SQL Server de origen y el trabajo de captura de datos de cambio de SQL Server debe estar en ejecución en la base de datos. Si la replicación transaccional de SQL Server también está activada para la base de datos, el agente del lector de logs de SQL Server debe estar en ejecución.
-
Si los datos de las columnas
TEXT, NTEXT, IMAGE,oVARCHAR(MAX), NVARCHAR(MAX)yVARBINARY(MAX)superan el tamaño por defecto de SQL Server definido para la opciónmax text repl size, amplíe el tamaño. Utilicesp_configurepara ver o ajustar el valor actual demax text repl size. Nota: Para Amazon RDS for SQL Server, para ajustar la configuración de la instancia, debe utilizar los grupos de parámetros en lugar desp_configure.
- Se recomienda instalar el Service Pack o la actualización acumulativa más recientes para la instancia de SQL Server a fin de garantizar una funcionalidad adecuada. Para SQL Server 2012, 2014, 2016 y 2017, Microsoft ha identificado y solucionado varios problemas importantes que afectan directamente a la función Captura de Datos de Cambios de SQL Server. Esta situación afecta a la capacidad de Oracle GoldenGate para capturar datos correctamente. Los problemas conocidos actuales que requieren parches de Microsoft incluyen KB3030352, KB3166120 y KB 4073684.
Requisitos de bases de datos
Observe los siguientes requisitos y limitaciones para admitir Oracle GoldenGate:
-
Solo están soportadas las bases de datos de usuario para la captura y entrega.
-
Asegúrese de que
Auto Create StatisticsyAuto Update Statisticsestán activados para la base de datos. -
La base de datos se debe definir en el nivel de compatibilidad de la versión de instancia de SQL Server.
-
Oracle GoldenGate soporta bases de datos de SQL Server configuradas con cifrado de datos transparente (TDE).
-
(Extraer) La base de datos de origen se puede definir en cualquier modelo de recuperación que admita la función de captura de datos de cambio en Microsoft SQL Server.
-
Si la base de datos origen se ha creado mediante la restauración de una copia de seguridad de una instancia diferente, debe sincronizar el SID del propietario de la base de datos con el SID de la nueva instancia. También puede utilizar
sp_changedbownerpara definir la base de datos restaurada en una conexión actual. -
Se soporta la captura desde bases de datos de SQL Server (SQL Server 2017 CU15 y versiones posteriores) activadas con OLTP en memoria (optimización en memoria), con las versiones 21.15 y 23.5 de Oracle GoldenGate en adelante. Sin embargo, solo está soportada la captura desde tablas en disco, no desde las tablas optimizadas para memoria.
-
(AlwaysOn) Extract soporta la captura desde la base de datos primaria o un modo de confirmación síncrona de solo lectura. El modo de confirmación asíncrona no se admite para la captura.
-
Consideración del rendimiento de Replicat: a partir de SQL Server 2016, Microsoft ha cambiado el valor por defecto para la opción de base de datos
TARGET_RECOVERY_TIMEde 0 a 60 segundos. En las pruebas internas se ha demostrado que esto puede reducir el rendimiento del Replicat. Si experimenta una degradación del rendimiento global de Replicat, considere ajustar el valorTARGET_RECOVERY_TIMEa 0.
Limitaciones:
-
Oracle GoldenGate no soporta la captura ni la entrega de bases de datos del sistema.
-
Oracle GoldenGate no soporta la captura desde bases de datos contenidas.
-
Los nombres de la base de datos origen no pueden superar los 121 caracteres. Esta limitación se debe a los procedimientos almacenados de SQL Server que se utilizan para activar el registro complementario.
-
Si está configurando la funcionalidad de latido de Oracle GoldenGate, el nombre de la base de datos de SQL Server no debe superar los 107 caracteres.
-
(AlwaysOn) La captura desde bases de datos configuradas en modo de confirmación asíncrona de un grupo de disponibilidad AlwaysOn no está soportada.
Requisitos de tabla
Las tablas que se van a incluir para la captura y entrega deben incluir solo los tipos de dato que se muestran en Tipos de Datos de SQL Server Soportados.
-
Oracle GoldenGate soporta la captura de DML transaccional a partir de tablas de usuario y la entrega a tablas de usuario y vistas que se pueden escribir.
-
Las operaciones DDL no están soportadas.
-
Oracle GoldenGate soporta el máximo permitido de nombres de tabla y longitudes de columna para las tablas de las que se realiza un seguimiento mediante la captura de datos de cambio de SQL Server.
-
La suma de todas las longitudes de columna de una tabla desde la que se va a capturar no debe superar la longitud que permite SQL Server para activar la captura de datos de cambio para la tabla. Si la suma de todas las longitudes de columna supera lo permitido por el procedimiento de SQL Server
sys.sp.cdc_enable_table, no se puede activarADD TRANDATApara esa tabla. La longitud máxima permitida del registro disminuye a medida que hay más columnas presentes, por lo que hay una relación inversa entre la longitud máxima del registro y el número de columnas de la tabla.
Tipos de datos de SQL Server soportados
Se admiten los siguientes tipos de datos para la captura y entrega, a menos que se indique específicamente en las limitaciones siguientes:
-
Tipos de datos binarios
-
(binary, varbinary, varbinary (max)) -
(varbinary (max)conFILESTREAM)
-
-
Tipos de datos de caracteres
(char, nchar, nvarchar, nvarchar (max), varchar, varchar (max))
-
Tipos de Datos de Fecha y Hora
(date, datetime2, datetime, datetimeoffset, smalldatetime, time)
-
Tipos de datos numéricos
(bigint, bit, decimal, float, int, money, numeric, real, smallint, smallmoney, tinyint)
-
LOB
(image, ntext, text)
-
Otros tipos de datos
(timestamp, uniqueidentifier, hierarchyid, geography, geometry, sql_variant (Delivery only), XML)
-
Oracle GoldenGate para SQL Server puede replicar los datos de columna que contienen la configuración
SPARSE.
Limitaciones:
-
Oracle GoldenGate no soporta el filtrado, la asignación de columnas ni la manipulación de objetos grandes de más de 4 KB. La funcionalidad completa de Oracle GoldenGate se puede utilizar para objetos de hasta 4 KB.
-
Oracle GoldenGate trata los datos XML como un objeto grande (LOB), al igual que SQL Server cuando el XML no encaja en una fila. Las mejoras XML ampliadas de SQL Server (como validación lax,
DATETIME, funcionalidad de unión) no se admiten. -
Una columna
TIMESTAMPasignada por el sistema o una columna calculada no materializada no pueden formar parte de una clave. Una tabla que contenga una columnaTIMESTAMPdebe tener una clave, que puede ser una clave primaria o una restricción única, o una clave de sustitución especificada con una cláusulaKEYCOLSen las sentenciasTABLEoMAP. Para obtener más información, consulte Asignación de identificadores de fila. -
Oracle GoldenGate soporta tipos de dato de caracteres multibyte y datos de varios bytes almacenados en columnas de caracteres. Los datos multibyte solo están soportados en una configuración similar de SQL Server. La transformación, el filtrado y otros tipos de manipulación no están soportados para los datos de caracteres multibyte.
-
Si la captura de datos para las columnas
TEXT,NTEXT,IMAGE,VARCHAR (MAX),NVARCHAR(MAX)yVARBINARY (MAX)supera el tamaño por defecto de SQL Server definido para la opciónmax text repl size, amplíe el tamaño. Utilicesp_configurepara ver el valor actual demax text repl sizey ajustar la opción según sea necesario. Nota: Amazon RDS para SQL Server no permite quemax text repl sizesea superior a 64 MB. {: .infoboxnote} -
Las columnas de los tipos de dato
IMAGE,NTEXTyTEXTse registran como un valorNULLpara suprimir y antes de las operaciones de actualización de imagen. Las columnasVARBINARY(MAX),VARCHAR(MAX)yNVARCHAR(MAX)se registran como un valorNULLpara operaciones anteriores a la actualización de imagen, a menos que la columna se haya actualizado.Para obtener más información, consulte el contenido de tipos de dato de objeto grande en el siguiente documento de Microsoft:
-
Oracle GoldenGate soporta datos UDT y UDA de hasta 2 GB de tamaño. Se admiten todos los UDT, excepto SQL_Variant.
-
Se admite Common Language Runtime (CLR), incluidos los tipos de datos CLR incorporados de SQL Server (como geometría, geografía e ID de jerarquía). Los tipos de dato CLR solo están soportados en una configuración similar a SQL Server. La transformación, el filtrado y otros tipos de manipulación no están soportados para los datos de CLR.
-
Las columnas
VARBINARY (MAX)con el atributoFILESTREAMestán soportadas hasta un tamaño de 4 GB. Extract utiliza funciones de archivoWin32estándar para leer el archivoFILESTREAM. -
El rango y la precisión de los números de punto flotante dependen de la máquina host. En general, la precisión es de 16 dígitos significativos, pero debe revisar la documentación de la base de datos para determinar las aproximaciones esperadas. Oracle GoldenGate redondea o trunca los valores que superan la precisión soportada.
-
Oracle GoldenGate soporta datos de registro de hora de 0001/01/03:00:00:00 a 9999/12/31:23:59:59. Si un registro de hora se convierte de GMT a la hora local, estos límites también se aplican al registro de hora resultante. Dependiendo de la zona horaria, la conversión puede sumar o restar horas, lo que puede hacer que el registro de hora supere el límite admitido inferior o superior.
Limitaciones en columnas calculadas:
-
Las columnas calculadas, persistentes o no persistentes, no están soportadas por la captura de datos de cambio de Microsoft. Por lo tanto, no se escribe ningún dato en la pista para las columnas que contienen columnas calculadas. Para replicar datos para columnas calculadas no persistentes, utilice la opción
FETCHCOLSoFETCHMODCOLSdel parámetroTABLEpara recuperar los datos de columna de la tabla.Tenga en cuenta que puede haber discrepancias causadas por diferencias en los valores de datos entre la hora a la que se cambió la columna en la base de datos y la hora a la que Extract recupera los datos del registro de transacción que se está procesando.
-
Cuando se utiliza una columna con el tipo de dato no soportado
sql_varianten las opcionesFETCHCOLSoFETCHMODCOLS, Extract finaliza de forma anormal con el siguiente error:ERROR OGG-25230 Unsupported datatype '*column-name* (sql_variant)' used with 'FETCHCOLS/FETCHCOLSEXCEPT' in table '*table-name>*. -
Replicat no aplica DML a ninguna columna calculada, incluso si los datos de esa columna están en la pista, porque la base de datos no permite DML en ese tipo de columna. Los datos de una columna calculada persistente de origen o de una columna no persistente recuperada se pueden aplicar a una columna de destino que no sea una columna calculada.
-
En una carga inicial, todos los datos se seleccionan directamente de las tablas de origen, no del registro de transacciones. Por lo tanto, en una carga inicial, los valores de datos de todas las columnas, incluidas las columnas calculadas no persistentes, se escriben en la pista o se envían al destino, según el método que se utilice. Sin embargo, al igual que al aplicar los datos de cambio, Replicat no aplica los datos de carga inicial a las columnas calculadas, porque la base de datos no permite DML en ese tipo de columna.
-
Oracle GoldenGate no permite que se utilice una columna calculada no persistente en una cláusula
KEYCOLSen una sentenciaTABLEoMAP. -
Si una clave única incluye una columna calculada no persistente y Oracle GoldenGate debe utilizar la clave, se ignora la columna calculada no persistente. Esto puede afectar a la integridad de los datos si las columnas restantes no aplican la unicidad.
-
Si se define un índice único en cualquier columna calculada no persistente, no se utiliza.
-
Si una clave o índice único contiene una columna calculada no persistente y es el único identificador único de una tabla, Oracle GoldenGate debe utilizar todas las columnas como identificador para buscar filas de destino. Puesto que no se puede utilizar una columna calculada no persistente en este identificador, Replicat puede aplicar operaciones que contengan este identificador a las filas de destino incorrectas.
Tipos de dato y funciones de SQL Server no soportados
-
SQL_Variantno está soportado para la captura. -
Las tablas que contienen tipos de dato no soportados pueden provocar que Extract finalice de forma anormal. Como solución alternativa, debe eliminar
TRANDATAde esas tablas y eliminarlas de la sentenciaTABLEde Extract o utilizar el parámetroTABLEEXCLUDEde Extract para la tabla.
Objetos y Operaciones Soportados para SQL Server
Se admiten los siguientes objetos y operaciones:
-
Parallel Replicat está soportado con Oracle GoldenGate for SQL Server.
-
Oracle GoldenGate soporta la captura de DML transaccional a partir de tablas de usuario y la entrega a tablas de usuario y vistas que se pueden escribir.
-
Las columnas
TEXT, NTEXT, IMAGE, VARBINARY, VARBINARY (MAX) VARCHAR (MAX)yNVARCHAR (MAX)están soportadas en su tamaño completo para las operaciones registradas por la captura de datos de cambio de SQL Server. Por ejemplo, las columnas de los tipos de datoIMAGE,NTEXTyTEXTse registran como un valor NULL para las operaciones de supresión. Para obtener más información, consulte el contenido de tipos de dato de objeto grande en el siguiente documento de Microsoft: -
Oracle GoldenGate soporta los tamaños de fila máximos permitidos para las tablas activadas para la captura de datos de cambio de SQL Server.
-
Oracle GoldenGate soporta la captura desde tablas activadas con compresión
PAGEyROW. Para las tablas particionadas que utilizan compresión, todas las particiones deben estar activadas con el mismo tipo de compresión. -
Oracle GoldenGate soporta la captura para tablas particionadas si la tabla tiene el mismo diseño físico en todas las particiones.
-
La suma de todas las longitudes de columna de una tabla desde la que se va a capturar no debe superar la longitud que permite SQL Server para activar la captura de datos de cambio para la tabla. Si la suma de todas las longitudes de columna supera lo permitido por el procedimiento de SQL Server
sys.sp.cdc_enable_table, no se puede agregarADD TRANDATApara esa tabla. La longitud máxima permitida del registro disminuye a medida que hay más columnas presentes, por lo que hay una relación inversa entre la longitud máxima del registro y el número de columnas de la tabla.
Objetos y Operaciones No Soportados para SQL Server
Los siguientes objetos y operaciones no están soportados:
-
Considere una relación principal-secundario entre dos tablas, donde una clave ajena de la tabla secundaria con la cláusula
ON UPDATE SET DEFAULThace referencia a una clave primaria de la tabla principal. La actualización de clave primaria diferida en la tabla principal da como resultado pares DELETE e INSERT. No se pueden identificar de forma fiable las operaciones DELETE e INSERT correspondientes en la tabla principal. Cuando se realiza una actualización diferida en la tabla principal, puede que Oracle GoldenGate Extract no capture todos los eventos de forma fiable. -
Para bases de datos de origen, operaciones que no están soportadas por la captura de datos de cambio de SQL Server, como sentencias
TRUNCATE. Consulte la documentación de Microsoft SQL Server para obtener una lista completa de las operaciones que están limitadas al activar la captura de datos de cambios de SQL Server. -
Oracle GoldenGate para SQL Server no soporta la captura o entrega de cambios de DDL para SQL Server y se necesitan pasos adicionales para que los procesos de Oracle GoldenGate en el origen y el destino manejen cualquier cambio de DDL a nivel de tabla, incluidas las operaciones de reconstrucción del índice de tabla. Consulte Requisitos para Cambios de DDL de Nivel de Tabla.
-
Las vistas no están soportadas.
-
Operaciones mediante la utilidad
TextCopyy las sentenciasWRITETEXTyUPDATETEXT. Estas funciones realizan operaciones que la base de datos no registra o que solo se registran parcialmente, por lo que el proceso de extracción no las soporta. -
Tablas particionadas que tienen más de un diseño físico entre particiones.
-
La partición cambia a una tabla de origen. SQL Server Change Data Capture trata los cambios de partición como operaciones DDL y los datos movidos de una partición a otra no se registran en las tablas CDC, por lo que debe seguir los procedimientos descritos en Requirements for Table Level DDL Changes para implementar manualmente un cambio de partición cuando la tabla está activada para el registro complementario.
-
Debido a una limitación con la captura de datos de cambio de SQL Server, las intercalaciones de nivel de columna que son diferentes de la intercalación de la base de datos pueden provocar que se escriban datos incorrectos en las tablas CDC para los datos de caracteres y Extract los capturará a medida que se escriban en las tablas CDC. Se recomienda utilizar los tipos de dato
NVARCHAR,NCHARoNTEXTpara columnas que contengan datos que no sean ASCII o utilizar la misma ordenación para las columnas de tabla que la base de datos. Para obtener más información, consulte Acerca de la Captura de Datos de Cambio (SQL Server). -
Debido a una limitación con la captura de datos de cambio de SQL Server, el agente de captura de datos de cambio de SQL Server no captura
NOOPUPDATES, por lo que no hay registros para la captura de Extract para las operaciones de actualización sin operaciones. -
Las tablas temporales no están soportadas para activar la captura de datos de cambio, por lo que no se pueden configurar para Extract para implantaciones de origen.
Requisitos para Cambios de DDL de Nivel de Tabla
Oracle GoldenGate para SQL Server no soporta la captura o entrega de cambios de DDL. Sin embargo, a partir de Oracle GoldenGate 21c, los cambios realizados en las tablas activadas con TRANDATA no harán que Extract finalice de forma anormal. Extract seguirá procesando los datos de cambio de la tabla tal y como existían cuando se activó TRANDATA.
Las operaciones que se consideran cambios de DDL de nivel de tabla incluyen, entre otras, las siguientes: ALTER TABLE, TRUNCATE TABLE, reconstrucciones de índices y conmutadores de particiones.
Para evitar inconsistencias en los datos debido a cambios en el DDL a nivel de tabla, se requieren los siguientes pasos.
-
Origen: pausar o parar los datos de la aplicación en la tabla o tablas que se van a modificar.
-
Fuente: Asegúrese de que no haya transacciones abiertas en la tabla que se van a modificar.
-
Origen: asegúrese de que el trabajo de captura de CDC de SQL Server procesa todas las transacciones restantes de la tabla que se va a modificar.
-
Origen: asegúrese de que Extract procesa todas las transacciones de la tabla que se va a modificar antes de realizar cambios de DDL.
-
Destino: asegúrese de que Replicat procesa todas las transacciones de la tabla que se va a modificar antes de realizar cambios de DDL.
-
Opcionalmente, la implantación de una tabla de marcador de evento se puede utilizar para determinar cuándo se han procesado todas las transacciones restantes de la tabla que se va a modificar y gestionar la coordinación de cuándo parar correctamente Extract y Replicat.
-
Origen: detener el proceso de extracción.
-
Destino: Pare el proceso de Replicat.
-
Origen: Desactive el registro complementario para la tabla que se va a modificar ejecutando
DELETE TRANDATA. -
Origen: realice cambios de DDL de tabla en la tabla de origen.
-
Destino: realice cambios de DDL de tabla en la tabla de destino.
-
Origen: vuelva a activar el registro complementario ejecutando
ADD TRANDATAen las tablas después de que se hayan realizado las modificaciones. -
Fuente: Iniciar el Extract.
-
Destino: inicie el Replicat.
-
Origen: reanude los datos de la aplicación en la tabla o tablas que se han modificado.
Esquemas del sistema para SQL Server
Los siguientes esquemas del sistema no están soportados para la replicación:
-
sys -
cdc -
INFORMATION_SCHEMA
El esquema guest no está soportado mediante asignaciones de comodines, pero está soportado cuando se muestra explícitamente, como TABLE guest.employees.