Error para paquetes SSIS en servidores SQL configurados para usar cifrado y tamaño de paquetes de red

Este artículo le ayuda a resolver el problema que se produce al configurar el SQL Server para usar conexiones cifradas y la opción de tamaño de paquetes de red.

Versión original del producto:   SQL Server
Número KB original:   2006769

Síntomas

Tenga en cuenta el siguiente escenario para SQL Server entornos:

  • Configure el servidor SQL Server para que use conexiones cifradas al motor de base de datos para las conexiones.

  • Configure el servidor de SQL para que use una opción de tamaño de paquete de red mayor que el valor predeterminado (4K).

En este escenario, observará lo siguiente:

  • Se producirá un error al intentar guardar paquetes SSIS en el almacén de paquetes de MSDB con el siguiente mensaje de error:

    El método SaveToSQLServer ha encontrado un código de error OLE DB 0x80004005 (error de vínculo de comunicación). Error SQL la instrucción que se emitió.

    Nota

    También se encuentra con el mensaje de error anterior al guardar planes de mantenimiento creados en SQL Server Management Studio como paquetes SSIS en bases de datos MSDB, ya que esa operación usa inherentemente el cifrado para las conexiones a SQL Server.

  • La característica del recopilador de SQL Server que usa SSIS tiene varios problemas, como se indica a continuación:

    • Un trabajo de conjunto de recopilación de datos informa de los siguientes errores en el historial de trabajos:

    dcexec: Error: Error interno en Main (motivo: el sistema no puede encontrar el archivo especificado).
    dcexec: Error: Error interno en Main (motivo: el controlador no es válido).

    • Al ejecutar un conjunto de recopilación de datos directamente desde los datos, es posible que encuentre el siguiente mensaje de error:

    Error en el paquete "Set_{7B191952-8ECF-4E12-AEB2-EF646EF79FEF}_Master_Package_Collection".

Si revisa los registros del recopilador de datos, encontrará un mensaje de error similar al siguiente:

Error SSIS. Nombre del componente: TaskForCollectionItem_1, código: -1073602332, subcomponente: (null), Descripción: Error 0xC0014062 mientras se prepara para cargar el paquete. El método LoadFromSQLServer ha encontrado un código de error OLE DB 0x80004005 (error de vínculo de comunicación). Error SQL la instrucción que se emitió.

El problema puede ocurrir con cualquier operación que use los métodos Application.LoadFromSqlServer(String, String, String, String, IDTSEvents) o Application.SaveToSqlServer(Package, IDTSEvents, String, String, String) métodos cuando se cumplen las condiciones (cifrado y tamaño de paquete grande) analizadas en esta sección.

Causa

Capa de sockets seguros (SSL) y su sustituto, Seguridad de la capa de transporte (TLS), limitan los fragmentos de datos a 16k (16384) de tamaño. Esto se documenta en el RFC 2246 público (sección 6.2.2) y la implementación actual de protocolos de red y la capa de puntos de conexión de TDS se adhieren a esta especificación. Por lo tanto, cuando se usa un tamaño de paquetes de red superior a 16.000 en entornos en los que el cifrado está habilitado en SQL Server, se encontrará con errores que se deban tratar en la sección Síntomas.

Solución

Para resolver este problema, especifique un tamaño de paquete de red menor o igual a 16.384 bytes. Puede usar el código siguiente para establecer la opción network packet size de configuración del procedimiento almacenado del sp_configure sistema:

Nota

Si MARS está habilitado, el proveedor de SMUX agregará un encabezado de 16 bytes al paquete antes del cifrado SSL, lo que reduce el tamaño máximo de los paquetes de red a 16368 bytes.

EXEC sp_configure 'network packet size', 16368
RECONFIGURE WITH OVERRIDE
GO

El tamaño de los paquetes de red también se puede modificar a través de la página Propiedades del servidor en el Explorador de objetos. Seleccione la opción Avanzadas y escriba el nuevo valor para Tamaño de paquetes de red y haga clic en Aceptar.

Nota

No es necesario reiniciar el SQL Server para que el cambio sea efectivo. Después de cambiar esta configuración, todas las conexiones nuevas reciben el nuevo valor.

Más información

TLS frente a SSL

Pasos para reproducir

sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
  1. Asegúrate de que el recopilador de datos está instalado.

  2. Establezca el tamaño de paquetes de red en un valor mayor que 16K.

  3. Haga clic con el botón secundario en Recopilación de datos en el Explorador de objetos (OE) y deshabilite la recopilación de datos.

  4. Haga clic con el botón secundario en Recopilación de datos en OE y seleccione Habilitar recopilación de datos.

  5. Haga clic con el botón secundario en Actividad del servidor en los conjuntos de colecciones y seleccione Iniciar conjunto de recopilación de datos.

  6. Para obtener el error, haga clic con el botón secundario en Actividad del servidor y seleccione Recopilar y cargar ahora. (Los registros de DC muestran el error en detalle).