Error para paquetes SSIS en servidores SQL Server configurados para usar el cifrado y el tamaño del paquete de red
Este artículo le ayuda a resolver el problema que se produce al configurar SQL Server para usar conexiones cifradas y opción de tamaño de paquete de red.
Versión del producto original: SQL Server
Número de KB original: 2006769
Síntomas
Tenga en cuenta el siguiente escenario para entornos de SQL Server:
Configure SQL Server para que use Habilitar conexiones cifradas con el Motor de base de datos para las conexiones.
Configure el servidor SQL Server 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 código de error ole DB 0x80004005 (error de vínculo de comunicación). Error en la instrucción SQL que se emitió.
Nota:
También se encuentra en 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 intrínsecamente el cifrado para las conexiones a SQL Server.
La característica recopilador de datos en SQL Server que usa SSIS se ejecuta en varios problemas, como se indica a continuación:
- Un trabajo del conjunto de recopilación de datos notifica los errores siguientes en el historial de trabajos:
dcexec: Error interno en Main (Motivo: El sistema no encuentra el archivo especificado).
dcexec: Error: Error interno en Main (Motivo: El identificador no es válido).- Al ejecutar un conjunto de recopilación de datos directamente desde los datos, puede aparecer 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 de SSIS. Nombre del componente: TaskForCollectionItem_1, Código: -1073602332, Subcomponent: (null), Descripción: Error 0xC0014062 al preparar la carga del paquete. El método LoadFromSQLServer ha encontrado código de error OLE DB 0x80004005 (error de vínculo de comunicación). Error en la instrucción SQL emitida.
El problema podría ocurrir con cualquier operación que use métodos application.LoadFromSqlServer(String, String, String, String, String, IDTSEvents) o Application.SaveToSqlServer(Package, IDTSEvents, String, String, String) cuando ambas condiciones (cifrado y tamaño de paquete grande) que se describen en esta sección son verdaderas.
Causa
Capa de socket seguro (SSL) y su reemplazo, Seguridad de la capa de transporte (TLS), limite los fragmentos de datos a 16k (16384) en tamaño. Esto se documenta en la rfC 2246 pública (sección 6.2.2) y la implementación actual de protocolos de red y la capa de puntos de conexión de TDS cumple esta especificación. Por lo tanto, cuando se usa un tamaño de paquete de red mayor que 16 000 en entornos en los que el cifrado está habilitado en SQL Server, se producirán errores descritos en la sección Síntomas.
Solución
Para resolver este problema, especifique un tamaño de paquete de red menor o igual que 16 384 bytes. Puede usar el código siguiente para establecer la network packet size
opción de configuración del procedimiento almacenado del sp_configure
sistema:
Nota:
Si MARS está habilitado, el proveedor SMUX agregará un encabezado de 16 bytes al paquete antes del cifrado SSL, lo que reduce el tamaño máximo del paquete de red a 16368 bytes.
EXEC sp_configure 'network packet size', 16368
RECONFIGURE WITH OVERRIDE
GO
El tamaño del paquete de red también se puede modificar a través de la página Propiedades del servidor en Explorador de objetos. Seleccione la opción Avanzadas y escriba el nuevo valor de Tamaño de paquete de red y haga clic en Aceptar.
Nota:
No es necesario reiniciar 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
Pasos para reproducir
sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
Asegúrese de que el recopilador de datos está instalado.
Establezca el tamaño del paquete de red en un valor mayor que 16 000.
Haga clic con el botón derecho en Recopilación de datos en Explorador de objetos (OE) y Deshabilite la recopilación de datos.
Haga clic con el botón derecho en Recopilación de datos en OE y seleccione Habilitar recopilación de datos.
Haga clic con el botón derecho en Actividad del servidor en los conjuntos de recopilación y seleccione Iniciar conjunto de recopilación de datos.
Para obtener el error, haga clic con el botón derecho en Actividad del servidor y seleccione Recopilar y cargar ahora. (Los registros del controlador de dominio muestran el error en detalle).