Solución de problemas de Azure Synapse Analytics, Azure SQL Database, SQL Server, Azure SQL Managed Instance y Amazon RDS para conectores de SQL Server en Azure Data Factory y Azure Synapse

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Data Factory en Microsoft Fabric es la próxima generación de Azure Data Factory, con una arquitectura más sencilla, inteligencia artificial integrada y nuevas características. Si no está familiarizado con la integración de datos, comience con Fabric Data Factory. Las cargas de trabajo de ADF existentes pueden actualizarse a Fabric para acceder a nuevas funcionalidades en ciencia de datos, análisis en tiempo real e informes.

En este artículo se proporcionan sugerencias para solucionar problemas comunes con los conectores de Azure Synapse Analytics, Azure SQL Database, SQL Server, Azure SQL Managed Instance y Amazon RDS para SQL Server en Azure Data Factory y Azure Synapse.

Código de error: SqlFailedToConnect

  • Mensaje: Cannot connect to SQL Database: '%server;', Database: '%database;', User: '%user;'. Check the linked service configuration is correct, and make sure the SQL Database firewall allows the integration runtime to access.

  • Causas y recomendaciones: hay diversas causas que pueden provocar este error. Busca en la lista siguiente el análisis de las posibles causas y la recomendación relacionada.

    Análisis de las causas Recomendación
    Para Azure SQL, si el mensaje de error contiene la cadena "SqlErrorNumber=47073", significa que se deniega el acceso a la red pública en la configuración de conectividad. En el firewall de Azure SQL, establezca la opción Deny public network access en No. Para obtener más información, consulte Azure SQL configuración de conectividad.
    Para Azure SQL, si el mensaje de error contiene un código de error SQL como "SqlErrorNumber=[errorcode]", consulte la guía de solución de problemas de Azure SQL. Para obtener una recomendación, consulte Solucione problemas de conectividad y otros errores con Azure SQL Database y Azure SQL Managed Instance.
    Compruebe si el puerto 1433 está en la lista de permitidos del firewall. Para obtener más información, consulte Puertos usados por SQL Server.
    Si el mensaje de error contiene la cadena "SqlException", SQL Database genera el error que indica que se produjo un problema en una operación específica. Para más información, busque por el código de error de SQL en Errores del motor de base de datos. Para obtener más ayuda, póngase en contacto con Azure SQL soporte técnico.
    Si se trata de un problema transitorio (por ejemplo, una conexión de red inestable), agregue reintentos en la directiva de actividad para mitigarlo. Para obtener más información, consulte Canalizaciones y actividades.
    Si el mensaje de error contiene la cadena "Client with IP address"... 'no tiene permiso para acceder al servidor' y está intentando conectarse a Azure SQL Database, el error suele deberse a un problema de firewall de Azure SQL Database. En la configuración del firewall de Azure SQL Server, habilite la opción Permitir que los servicios y recursos de Azure accedan a este servidor. Para más información, consulte Reglas de firewall de IP de Azure SQL Database y Azure Synapse.
    Si el mensaje de error contiene Login failed for user '<token-identified principal>', este error suele deberse a que no se han concedido permisos suficientes a la entidad de servicio, a la identidad administrada asignada por el sistema o a la identidad administrada asignada por el usuario (depende del tipo de autenticación que elija) en la base de datos. Conceda suficientes permisos a su principal de servicio o identidad administrada asignada por el sistema o identidad administrada asignada por el usuario en su base de datos.

    Para Azure SQL Database:
        - Si usa la autenticación de entidad de servicio, siga los pasos que se indican en Autenticación de entidad de servicio.
        - Si usa la autenticación de identidad administrada asignada por el sistema, siga los pasos que se indican en Autenticación de identidad administrada asignada por el sistema.
        - Si usa la autenticación de identidad administrada asignada por el usuario, siga los pasos que se indican en Autenticación de identidad administrada asignada por el usuario.
       
    Para Azure Synapse Analytics:
        - Si usa la autenticación de entidad de servicio, siga los pasos que se indican en Autenticación de entidad de servicio.
        - Si usa la autenticación de identidad administrada asignada por el sistema, siga los pasos que se indican en Identidades administradas asignadas por el sistema para la autenticación de recursos de Azure.
        - Si usa la autenticación de identidad administrada asignada por el usuario, siga los pasos que se indican en Autenticación de identidad administrada asignada por el usuario.
       
    Para Azure SQL Managed Instance:
        - Si usa la autenticación de entidad de servicio, siga los pasos que se indican en Autenticación de entidad de servicio.
       - Si usa la autenticación de identidad administrada asignada por el sistema, siga los pasos que se indican en Autenticación de identidad administrada asignada por el sistema.
       - Si usa la autenticación de identidad administrada asignada por el usuario, siga los pasos que se indican en Autenticación de identidad administrada asignada por el usuario.
    Si aparece el mensaje de error que contiene The server was not found or was not accessible al usar Azure SQL Managed Instance, este error suele deberse a que no se habilita el punto de conexión público de Azure SQL Managed Instance. Consulte Configurar punto de conexión público en Azure SQL Managed Instance para habilitar el punto de conexión público de Azure SQL Managed Instance.

Código de error: SqlOperationFailed

  • Mensaje: A database operation failed. Please search error to get more details.

  • Causas y recomendaciones: hay diversas causas que pueden provocar este error. Busca en la lista siguiente el análisis de las posibles causas y la recomendación relacionada.

    Análisis de las causas Recomendación
    Si el mensaje de error contiene la cadena "SqlException", SQL Database genera un error que indica que se produjo un problema en una operación concreta. Si el error de SQL no está claro, intenta modificar la base de datos al nivel de compatibilidad más reciente de "150". Puede generar errores de SQL de la versión más reciente. Para más información, consulte la documentación.
    Para más información sobre la solución de problemas de SQL, busque por el código de error de SQL en Errores del motor de base de datos. Para obtener más ayuda, póngase en contacto con Azure SQL soporte técnico.
    Si el mensaje de error contiene la cadena "PdwManagedToNativeInteropException", generalmente se debe a una discrepancia entre los tamaños de las columnas de origen y las del destino. Compruebe el tamaño de las columnas de origen y receptor. Para obtener más ayuda, póngase en contacto con Azure SQL soporte técnico.
    Si el mensaje de error contiene la cadena "InvalidOperationException", normalmente se debe a que los datos de entrada no son válidos. Para saber en qué fila se encuentra el problema, habilite la característica de tolerancia a errores en la actividad de copia, que puede redirigir las filas problemáticas al almacenamiento para investigarlas más a fondo. Para obtener más información, consulte Tolerancia a errores de la actividad de copia.
    Si el mensaje de error contiene "Tiempo de espera de ejecución expirado", por lo general, se debe al tiempo de espera de la consulta. Configure el tiempo de espera de la consulta en el origen y el tiempo de espera de escritura por lotes en el receptor para aumentar el tiempo de espera.
    Si el mensaje de error contiene Cannot find the object "dbo.Contoso" because it does not exist or you do not have permissions. al copiar datos de un entorno híbrido en una tabla de SQL Server local, se debe a que la cuenta SQL actual no tiene permisos suficientes para ejecutar solicitudes emitidas por .NET SqlBulkCopy.WriteToServer o porque su tabla o base de datos no existe. Cambie a una cuenta SQL con más privilegios o compruebe si existe la tabla o la base de datos.

Código de error: SqlUnauthorizedAccess

  • Mensaje: Cannot connect to '%connectorName;'. Detail Message: '%message;'

  • Causa: las credenciales son incorrectas o la cuenta de inicio de sesión no puede acceder a la base de datos SQL.

  • Recomendación: compruebe que la cuenta de inicio de sesión tenga permisos suficientes para acceder a la base de datos SQL.

Código de error: SqlOpenConnectionTimeout

  • Mensaje: Open connection to database timeout after '%timeoutValue;' seconds.

  • Causa: el problema podría ser un error transitorio de SQL Database.

  • Recommendation: Vuelva a intentar la operación para actualizar la cadena de conexión del servicio vinculado con un valor de tiempo de espera de conexión mayor.

Código de error: SqlAutoCreateTableTypeMapFailed

  • Mensaje: Type '%dataType;' in source side cannot be mapped to a type that supported by sink side(column name:'%columnName;') in autocreate table.

  • Causa: La tabla de creación automática no puede cumplir el requisito de origen.

  • Recomendación: actualice el tipo de columna en mappings o cree manualmente la tabla de destino en el servidor de destino.

Código de error: SqlDataTypeNotSupported

  • Mensaje: A database operation failed. Check the SQL errors.

  • Causa: Si el problema se produce en el origen de SQL y el error está relacionado con el desbordamiento de SqlDateTime, el valor de datos está por encima del intervalo de tipos de lógica (1/1/1753 12:00:00 AM - 12/31/9999 11:59:59 PM).

  • Recomendación: Convierta el tipo en la cadena en la consulta SQL de origen o, en la asignación de columnas de la actividad de copia, cambie el tipo de columna a String.

  • Causa: Si el problema se produce en el receptor de SQL y el error está relacionado con el desbordamiento de SqlDateTime, el valor de los datos estará por encima del intervalo permitido en la tabla del receptor.

  • Recomendación: Actualice el tipo de columna correspondiente al tipo datetime2 en la tabla de destino.

Código de error: SqlInvalidDbStoredProcedure

  • Mensaje: The specified Stored Procedure is not valid. It could be caused by that the stored procedure doesn't return any data. Invalid Stored Procedure script: '%scriptName;'.

  • Causas y recomendaciones: hay diversas causas que pueden provocar este error. Busca en la lista siguiente el análisis de las posibles causas y la recomendación relacionada.

    Análisis de las causas Recomendación
    El procedimiento almacenado especificado no es válido. Valide el procedimiento almacenado con las herramientas de SQL. Asegúrese de que el procedimiento almacenado pueda devolver datos.
    La actividad de búsqueda requiere que el procedimiento almacenado devuelva algún valor, pero el código del procedimiento almacenado no devuelve ningún valor. Use la actividad de procedimiento almacenado si se espera que el procedimiento almacenado no devuelva datos.

Código de error: SqlInvalidDbQueryString

  • Mensaje: The specified SQL Query is not valid. It could be caused by that the query doesn't return any data. Invalid query: '%query;'

  • Causa: La consulta SQL especificada no es válida. La causa podría ser que la consulta no devuelva ningún dato.

  • Recomendación: valide la consulta SQL con las herramientas de SQL. Asegúrese de que la consulta pueda devolver datos.

Código de error: SqlInvalidColumnName

  • Mensaje: Column '%column;' does not exist in the table '%tableName;', ServerName: '%serverName;', DatabaseName: '%dbName;'.

  • Causa: No se puede encontrar la columna porque es posible que la configuración no sea correcta.

  • Recomendación: compruebe la columna en la consulta, el valor structure en el conjunto de datos y el valor mappings en la actividad.

Código de error: SqlBatchWriteTimeout

  • Mensaje: Timeouts in SQL write operation.

  • Causa: el problema podría ser un error transitorio de SQL Database.

  • Recomendación: vuelva a intentar la operación. Si el problema persiste, póngase en contacto con Azure SQL soporte técnico.

Código de error: SqlBatchWriteTransactionFailed

  • Mensaje: SQL transaction commits failed.

  • Causa: si los detalles de la excepción indican constantemente el agotamiento del tiempo de espera de la transacción, significa que la latencia de red entre el entorno de ejecución de integración y la base de datos supera el umbral predeterminado de 30 segundos.

  • Recomendación: Actualice la cadena de conexión del servicio vinculado de SQL con un valor de tiempo de espera de la conexión igual a 120 o mayor y vuelva a ejecutar la actividad.

  • Causa: si los detalles de la excepción indican de forma intermitente que la conexión SQL se ha interrumpido, podría tratarse de un error de red transitorio o de un problema de SQL Database.

  • Recomendación: vuelva a intentar la actividad y revise las métricas del lado de SQL Database.

Código de error: SqlBulkCopyInvalidColumnLength

  • Mensaje: SQL Bulk Copy failed due to receive an invalid column length from the bcp client.

  • Causa: Error en la copia masiva de SQL porque ha recibido una longitud de columna no válida del cliente de la utilidad del programa de copia masiva (bcp).

  • Recomendación: para identificar en qué fila se ha encontrado el problema, habilite la característica de tolerancia a errores en la actividad de copia. Esta acción puede redirigir las filas problemáticas al almacenamiento para investigarlas más a fondo. Para obtener más información, consulte Tolerancia a errores de la actividad de copia.

Código de error: SqlConnectionIsClosed

  • Mensaje: The connection is closed by SQL Database.

  • Causa: La base de datos SQL cierra la conexión SQL cuando ocurre una ejecución con alta concurrencia y el servidor termina la conexión.

  • Recomendación: vuelva a intentar la conexión. Si el problema persiste, póngase en contacto con Azure SQL soporte técnico.

Código de error: SqlServerInvalidLinkedServiceCredentialMissing

  • Mensaje: The SQL Server linked service is invalid with its credential being missing.

  • Causa: el servicio vinculado no se ha configurado correctamente.

  • Recomendación: valide y corrija el servicio vinculado de SQL Server.

Código de error: SqlParallelFailedToDetectPartitionColumn

  • Mensaje: Failed to detect the partition column with command '%command;', %message;.

  • Causa: no hay ninguna clave principal ni única en la tabla.

  • Recomendación: compruebe la tabla para asegurarse de que se haya creado una clave principal o un índice único.

Código de error: SqlParallelFailedToDetectPhysicalPartitions

  • Mensaje: Failed to detect the physical partitions with command '%command;', %message;.

  • Causa: no se han creado particiones físicas para la tabla. Compruebe la base de datos.

  • Recomendación: consulte Crear tablas e índices con particiones para resolver este problema.

Código de error: SqlParallelFailedToGetPartitionRangeSynapse

  • Mensaje: Failed to get the partitions for azure synapse with command '%command;', %message;.

  • Causa: no se han creado particiones físicas para la tabla. Compruebe la base de datos.

  • Recomendación: consulte la sección Partición de tablas en el grupo SQL dedicado para resolver este problema.

Mensaje de error: Error de conversión al convertir de una cadena de caracteres a uniqueidentifier

  • Symptoms: al copiar datos de un origen de datos tabular (como SQL Server) en Azure Synapse Analytics mediante copia almacenada provisionalmente y PolyBase, recibirá el siguiente error:

    ErrorCode=FailedDbOperation,Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message=Error happened when loading data into Azure Synapse Analytics., Source=Microsoft.DataTransfer.ClientLibrary,Type=System.Data.SqlClient.SqlException, Message=Conversion failed when converting from a character string to uniqueidentifier...

  • Cause: Azure Synapse Analytics PolyBase no puede convertir una cadena vacía en un GUID.

  • Solución: En el receptor de la actividad de copia, en la configuración de PolyBase, establezca la opción Use Type default (Usar tipo predeterminado) en false.

Mensaje de error: Expected data type: DECIMAL(x,x), Offending value (Tipo de datos esperado: DECIMAL(x,x), valor incorrecto)

  • Symptoms: al copiar datos de un origen de datos tabular (como SQL Server) en Azure Synapse Analytics mediante copia almacenada provisionalmente y PolyBase, recibirá el siguiente error:

    ErrorCode=FailedDbOperation,Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message=Error happened when loading data into Azure Synapse Analytics., Source=Microsoft.DataTransfer.ClientLibrary,Type=System.Data.SqlClient.SqlException, Message=Query aborted-- the maximum reject threshold (0 rows) was reached while reading from an external source: 1 rows rejected out of total 415 rows processed. (/file_name.txt) Column ordinal: 18, Expected data type: DECIMAL(x,x), Offending value:..

  • Cause: Azure Synapse Analytics PolyBase no puede insertar una cadena vacía (valor NULL) en una columna decimal.

  • Solución: En el receptor de la actividad de copia, en la configuración de PolyBase, establezca la opción Use Type default (Usar tipo predeterminado) en false.

Mensaje de error: Mensaje de excepción de Java: HdfsBridge::CreateRecordReader

  • Symptoms: copia datos en Azure Synapse Analytics mediante PolyBase y recibe el siguiente error:

    Message=110802;An internal DMS error occurred that caused this operation to fail. Details: Exception: Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsAccessException, Message: Java exception raised on call to HdfsBridge_CreateRecordReader. Java exception message:HdfsBridge::CreateRecordReader - Unexpected error encountered creating the record reader.: Error [HdfsBridge::CreateRecordReader - Unexpected error encountered creating the record reader.] occurred while accessing external file.....

  • Causa: La causa podría ser que el esquema (ancho total de columna) sea demasiado grande (más de 1 MB). Compruebe el esquema de la tabla Azure Synapse Analytics de destino agregando el tamaño de todas las columnas:

    • Int = 4 bytes
    • Bigint = 8 bytes
    • Varchar(n), char(n), binary(n), varbinary(n) = n bytes
    • Nvarchar(n), nchar(n) = n * 2 bytes
    • Fecha = 6 bytes
    • Datetime/(2), smalldatetime = 16 bytes
    • Datetimeoffset = 20 bytes
    • Decimal = 19 bytes
    • Float = 8 bytes
    • Money = 8 bytes
    • Smallmoney = 4 bytes
    • Real = 4 bytes
    • Smallint = 2 bytes
    • Tiempo = 12 bytes
    • Tinyint = 1 byte
  • Solución:

    • Reduzca el ancho de columna a menos de 1 MB.
    • También puede deshabilitar PolyBase para usar un enfoque de inserción masiva.

Mensaje de error: no se cumple la condición especificada mediante encabezados condicionales HTTP.

  • Symptoms: use la consulta SQL para extraer datos de Azure Synapse Analytics y reciba el siguiente error:

    ...StorageException: The condition specified using HTTP conditional header(s) is not met...

  • Cause: Azure Synapse Analytics encontró un problema al consultar la tabla externa en Azure Storage.

  • Resolution: ejecute la misma consulta en SQL Server Management Studio (SSMS) y compruebe si obtiene el mismo resultado. Si lo hace, abra una incidencia de soporte técnico para Azure Synapse Analytics y proporcione el nombre del servidor y la base de datos de Azure Synapse Analytics.

El nivel de rendimiento es bajo y genera un error de copia

  • Symptoms: copia datos en Azure SQL Database y recibe el siguiente error: Database operation failed. Error message from database execution : ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.

  • Causa: Azure SQL Database s1 ha alcanzado los límites de entrada/salida (E/S).

  • Resolution: actualice el nivel de rendimiento de Azure SQL Database para corregir el problema.

Mensaje de error: Los datos binarios o de tipo cadena se truncan

  • Symptoms: se produce un error al copiar datos en una tabla local de Azure SQL Server.

  • Causa: La definición del esquema de la tabla SQL tiene una o más columnas con menos longitud de la esperada.

  • Solución: Para resolver la incidencia, intente lo siguiente:

    1. Para detectar las filas que tienen el problema, aplique tolerancia a errores al receptor SQL, especialmente redirectIncompatibleRowSettings.

      Nota:

      La tolerancia a errores podría requerir tiempo de ejecución adicional, lo que podría conllevar costos mayores.

    2. Vuelva a comprobar los datos redirigidos con la longitud de la columna del esquema de la tabla SQL para ver qué columnas deben actualizarse.

    3. Actualice el esquema de tabla como corresponda.

Código de error: FailedDbOperation

  • Mensaje: User does not have permission to perform this action.

  • Recommendation: asegúrese de que el usuario configurado en el conector de Azure Synapse Analytics debe tener el permiso "CONTROL" en la base de datos de destino mientras usa PolyBase para cargar datos. Para obtener más detalles, consulte este documento.

Código de error: Msg 105208

  • Síntomas: código de error: Error code: Msg 105208, Level 16, State 1, Line 1 COPY statement failed with the following error when validating value of option 'FROM': '105200;COPY statement failed because the value for option 'FROM' is invalid.'
  • Cause: Actualmente, la ingesta de datos mediante el comando COPY en una cuenta de Azure Storage que usa la nueva característica de creación de particiones DNS produce un error. La característica de particiones de DNS permite a los clientes crear hasta 5000 cuentas de almacenamiento por suscripción.
  • Resolutions: aprovisione una cuenta de almacenamiento en una suscripción que no use la nueva característica de partición Azure Storage DNS (actualmente en versión preliminar pública).

Código de error: SqlDeniedPublicAccess

  • Mensaje: Cannot connect to SQL Database: '%server;', Database: '%database;', Reason: Connection was denied since Deny Public Network Access is set to Yes. To connect to this server, 1. If you persist public network access disabled, please use Managed Virtual Network IR and create private endpoint. https://docs.microsoft.com/en-us/azure/data-factory/managed-virtual-network-private-endpoint; 2. Otherwise you can enable public network access, set "Public network access" option to "Selected networks" on Azure SQL Networking setting.

  • Causes: Azure SQL Database está configurado para denegar el acceso a la red pública. Esto requiere usar la red virtual administrada y crear un punto de conexión privado para acceder.

  • Recomendación:

    1. Si insiste en deshabilitar el acceso a la red pública, use el entorno de ejecución de integración de red virtual administrada y cree un punto de conexión privado. Para obtener más información, consulte Azure Data Factory red virtual administrada.

    2. De lo contrario, habilite el acceso a la red pública estableciendo la opción Public network access para Selected networks en Azure SQL Database Networking página de configuración.

Para obtener ayuda para solucionar problemas, pruebe estos recursos: