Se producen errores de conexión intermitentes al usar la utilidad SQLCMD
Este artículo le ayuda a resolver problemas intermitentes de conexión "error del sistema operativo 10054" que se producen al usar la herramienta de línea de comandos SQLCMD.
Errores
Recibirá los siguientes mensajes de advertencia y error:
ADVERTENCIA: proc_procname devuelto HResult 0x2746, Nivel 16, Estado 1
Proveedor TCP: el host remoto ha cerrado forzadamente una conexión existente.
SQLCMD.EXE : Sqlcmd: Error: Microsoft SQL Server Native Client 10.0 : El cliente no puede establecer la conexión
Una posible causa de estos errores es un controlador no compatible.
Preguntas que se deben tener en cuenta
Revise los escenarios siguientes para determinar si hay alguna coincidencia con el problema:
Recopila un seguimiento de red y aprende que TLS 1.0 y 1.1 están deshabilitados y QUE TLS 1.2 está habilitado. En el servidor que ejecuta SQL Server, TLS 1.0, 1.1 y 1.2 están habilitados en el servidor de aplicaciones.
Ejecute una prueba udL en el servidor de aplicaciones mediante el proveedor OLE DB de Microsoft para SQL Server y el proveedor SNAC 11. Se produce un error en la conexión. También recibe un mensaje que indica que el controlador "Proveedor OLE DB de Microsoft para SQL Server" está en desuso y no admite TLS 1.2.
El servidor de aplicaciones usa SQL Server Native Client 11 para probar correctamente el origen de datos ODBC. Si NO se admite SQL Server Native Client 10.0, es posible que reciba el siguiente mensaje de error:
Error de conexión con el estado de SQL: '08001' SQL Server Error: 10054 [Microsoft][PROVEEDOR TCP de SQL Server Native Client 10.0]: Un host remoto ha cerrado forzadamente una conexión existente. [Microsoft][SQL Server Native Client 10.0] El cliente no puede establecer la conexión.
Este mensaje puede mostrarse porque el servidor de aplicaciones usa la versión anterior del algoritmo Diffie-Hellman (v1) y SQL Server usa la versión más reciente (v2). Esta falta de coincidencia provoca errores intermitentes de TLS.
Solución
Para resolver estos problemas, siga estos pasos:
Especifique SQL Server Native Client 11 en el cadena de conexión.
Nota:
Microsoft ya no admite SNAC 11. Si experimenta algún problema durante el uso de SNAC 11, debe actualizar a una versión compatible del controlador de Microsoft antes de que se pueda proporcionar soporte técnico.
Actualice el controlador de aplicación a un controlador compatible.
Use MSOLEDBSQL v18 o ODBC v17 si no usa el cifrado para la conexión. Si usa el cifrado para la conexión en el servidor de aplicaciones, use MSOLEDBSQL v19 o ODBC v18. De forma predeterminada, estos controladores se incluyen junto con el cifrado. Para más información, consulte los siguientes artículos:
Consulte también
El host remoto cerró forzadamente una conexión existente (error del sistema operativo 10054)