다음을 통해 공유


SQLCMD 유틸리티를 사용할 때 일시적인 연결 오류가 발생합니다.

이 문서는 SQLCMD 명령줄 도구를 사용할 때 발생하는 일시적인 연결 "OS 오류 10054" 문제를 resolve 데 도움이 됩니다.

오류

다음과 같은 경고 및 오류 메시지가 표시됩니다.

경고: proc_procname 반환된 HResult 0x2746, 수준 16, 상태 1

TCP 공급자: 기존 연결이 원격 호스트에 의해 강제로 닫혔습니다.

SQLCMD.EXE: Sqlcmd: 오류: Microsoft SQL Server Native Client 10.0: 클라이언트가 연결을 설정할 수 없음

이러한 오류의 가능한 원인 중 하나는 지원되지 않는 드라이버입니다.

고려해야 할 질문

다음 시나리오를 검토하여 문제와 일치하는지 확인합니다.

  • 네트워크 추적을 수집하고 TLS 1.0 및 1.1이 비활성화되고 TLS 1.2가 사용하도록 설정되어 있는지 알아봅니다. SQL Server 실행 중인 서버에서 애플리케이션 서버에서 TLS 1.0, 1.1 및 1.2가 사용하도록 설정됩니다.

    애플리케이션 서버에서 TLS 1.0, 1.1 및 1.2가 사용하도록 설정되어 있음을 보여 주는 스크린샷

  • SQL Server Microsoft OLE DB 공급자와 SNAC 11 공급자를 모두 사용하여 애플리케이션 서버에서 UDL 테스트를 실행합니다. 연결이 실패합니다. 또한 "Microsoft OLE DB Provider for SQL Server" 드라이버가 더 이상 사용되지 않으며 TLS 1.2를 지원하지 않는다는 메시지가 표시됩니다.

  • 애플리케이션 서버는 SQL Server Native Client 11을 사용하여 ODBC 데이터 원본을 성공적으로 테스트합니다. SQL Server Native Client 10.0이 지원되지 않으면 다음 오류 메시지가 표시될 수 있습니다.

    SQL 상태: '08001' SQL Server 오류: 10054 [Microsoft][SQL Server Native Client 10.0]TCP 공급자: 원격 호스트에 의해 기존 연결이 강제로 닫혔습니다. [Microsoft] [SQL Server Native Client 10.0] 클라이언트가 연결을 설정할 수 없습니다.

    애플리케이션 서버가 이전 버전의 Diffie-Hellman 알고리즘(v1)을 사용하고 SQL Server 최신 버전(v2)을 사용하기 때문에 이 메시지가 표시될 수 있습니다. 이 불일치로 인해 일시적인 TLS 오류가 발생합니다.

해결 방법

이러한 문제를 해결하려면 다음 단계를 수행합니다.

  1. 연결 문자열 SQL Server Native Client 11을 지정합니다.

    참고

    Microsoft는 더 이상 SNAC 11을 지원하지 않습니다. SNAC 11을 사용하는 동안 문제가 발생하는 경우 기술 지원을 제공하기 전에 지원되는 버전의 Microsoft 드라이버로 업그레이드해야 합니다.

  2. 애플리케이션 드라이버를 지원되는 드라이버로 업그레이드합니다.

  3. 연결에 암호화를 사용하지 않는 경우 MSOLEDBSQL v18 또는 ODBC v17을 사용합니다. 애플리케이션 서버의 연결에 암호화를 사용하는 경우 MSOLEDBSQL v19 또는 ODBC v18을 사용합니다. 기본적으로 이러한 드라이버는 암호화와 함께 포함됩니다. 자세한 내용은 다음 문서를 참조하세요.

참고 항목

기존 연결이 원격 호스트에 의해 강제로 닫혔습니다(OS 오류 10054)