Mensaje de error "Error de vínculo de comunicación" se notifica para los paquetes SSIS en servidores SQL configurados para utilizar un tamaño de paquete de red de gran tamaño y cifrado


Síntomas


Considere el escenario siguiente para entornos SQL Server 2005 o SQL Server 2008:

  • Configurar el SQL Server para que utilice SSL para las conexiones.
  • Configurar el servidor SQL para utilizar un tamaño de paquete de red que es mayor que el valor predeterminado (4 KB)

En este caso, observará lo siguiente:

  • Un intento de guardar paquetes SSIS en el almacén del paquete MSDB se producirá un error con el mensaje de error siguiente:

El método SaveToSQLServer encontró el código de error 0 x 80004005 (Error de enlace de comunicación) de OLE DB. Error en la instrucción SQL emitida.

Nota: También tiene el mensaje de error anterior al guardar el plan de mantenimiento creado en SQL Server Management Studio como paquetes SSIS para bases de datos MSDB desde esa operación intrínsecamente utiliza el cifrado para las conexiones a SQL Server.

  • Característica de recopiladores de datos en SQL Server 2008 que utiliza SSIS, se ejecuta en diversos problemas, como se indica a continuación:
    • Un trabajo conjunto de recopilación de datos informa de los errores siguientes en el historial de trabajos:

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

    • Cuando se ejecuta un conjunto de colección de datos directamente desde los datos puede encontrar el siguiente mensaje de error:

Error de 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 de componente: TaskForCollectionItem_1, código:-1073602332, subcomponente: (null), descripción: Error 0xC0014062 al preparar cargar el paquete. El método LoadFromSQLServer encontró el código de error 0 x 80004005 (Error de enlace de comunicación) de OLE DB.  Error en la instrucción SQL emitida.

Nota: el problema puede ocurrir con cualquier operación que utiliza métodos LoadFromSqlServer o SaveToSqlServer cuando se cumplen las dos condiciones (cifrado y el tamaño de paquete grande) descritas en esta sección.

Causa


Secure Socket Layer (SSL) y su sustitución, Security(TLS) de la capa de transporte, límite de fragmentos de datos a 16 KB (16384) de tamaño. Esto se documenta en RFC 2246 pública (sección 6.2.2) y la implementación actual de la capa de Interfaz de red de SQL (SNI) cumple esta especificación. Así que cuando se utiliza un tamaño de paquete de red es mayor que 16k en entornos donde está habilitado el cifrado en SQL Server, se ejecutará en los errores descritos en la sección síntomas. Para obtener más información, consulte el siguiente artículo de Knowledge Base:

  • 2008195Imemoria a tener en cuenta al cambiar el valor predeterminado del tamaño de paquete de red para las conexiones de SQL server

Resolución


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

Nota: Si MARS está habilitado, el proveedor SMUX agregará un encabezado de 16 bytes al paquete antes del cifrado SSL, reduciendo el tamaño de paquete máximo de red a 16368 bytes.

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

También se puede modificar el tamaño de paquete de red a través de la página de propiedades del servidor en el Explorador de objetos. Seleccione la opción avanzado y escriba en el nuevo valor para tamaño de paquete de red y haga clic en Aceptar.

Nota: no es necesario que reinicie SQL Server para que el cambio para que sea eficaz. Después de cambia esta configuración, todas las conexiones nuevas recibirán el nuevo valor.

Más información


Pasos para reproducir:
sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
  1.  Asegúrese de que está instalado el recopilador de datos.
  2.  Establece la opción Network Packet Size en un valor mayor que 16K.
  3. Haga clic con el botón derecho sobre la Recopilación de datos en el Explorador de objetos (OE) y deshabilitar la recopilación de datos.
  4. Haga clic con el botón secundario en la Recopilación de datos en Outlook Express y seleccione Habilitar la recopilación de datos.
  5. Haga clic derecho en La actividad del servidor en los conjuntos de la colección y seleccione Iniciar el conjunto de recopilación de datos.
  6. Para obtener el error, haga clic con el botón secundario en La actividad del servidor y seleccione recopilar y cargar ahora. (El controlador de dominio registra muestre el error en detalle).