SQL Server에 연결하는 동안 네트워크 관련 오류 또는 인스턴스에 특정한 오류가 발생했습니다.

적용 대상: SQL Server

SQL Server 인스턴스에 연결할 때 아래 오류 메시지 중 한 이상이 나타날 수 있습니다. 이 문서에서는 이러한 오류를 해결하는 데 도움이 되는 몇 가지 단계를 제공하며 문제의 순서는 간단한 것부터 복잡한 것까지입니다.

오류 메시지

전체 오류 메시지는 애플리케이션 및 서버 환경에서 사용되는 클라이언트 라이브러리에 따라 달라집니다. 다음 세부 정보를 확인하여 다음 오류 메시지 중 하나가 발생하는지 확인할 수 있습니다.

공급자: 명명된 파이프 공급자, 오류: 40 - SQL Server 대한 연결을 열 수 없습니다(Microsoft SQL Server, 오류: 53) SQL Server에 연결하는 동안 네트워크 관련 오류 또는 인스턴스에 특정한 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스할 수 없습니다. 인스턴스 이름이 올바르고 SQL Server 원격 연결을 허용하도록 구성되어 있는지 확인합니다.
공급자: 명명된 파이프 공급자, 오류: 40 - SQL Server에 대한 연결을 열 수 없습니다(Microsoft SQL Server, 오류: 53).
공급자: TCP 공급자, 오류: 0 - 이러한 호스트를 알 수 없습니다. (Microsoft SQL Server, 오류: 11001)

공급자: SQL 네트워크 인터페이스, 오류: 26 - 서버/인스턴스를 찾는 중 오류가 지정됨 SQL Server에 연결하는 동안 네트워크 관련 오류 또는 인스턴스에 특정한 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스할 수 없습니다. 인스턴스 이름이 올바르고 SQL Server 원격 연결을 허용하도록 구성되어 있는지 확인합니다.
공급자: SQL 네트워크 인터페이스, 오류: 26 - 서버/인스턴스를 찾는 중 오류가 지정됨

로그인 시간 제한 만료됨 SQL Server Native Client 데이터 링크 오류
[Microsoft SQL Server Native Client 10.0]: 로그인 제한 시간이 만료되었습니다.
[Microsoft SQL Server Native Client 10.0]: SQL Server 연결을 설정하는 동안 네트워크 관련 또는 인스턴스별 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스할 수 없습니다. 인스턴스 이름이 올바른지와 SQL Server가 원격 연결을 허용하도록 구성되어 있는지 확인합니다. 자세한 내용은 SQL Server 온라인 설명서를 참조하세요.
[Microsoft SQL Server Native Client 10.0]: SQL Server 네트워크 인터페이스: 서버/인스턴스를 찾는 중 오류가 발생했습니다. [xFFFFFFFF].

연결된 당사자가 일정 기간 후에 제대로 응답하지 않았거나 연결된 호스트가 응답하지 않아 연결이 설정되지 않아 연결 시도가 실패했습니다. SQL Server에 연결하는 동안 네트워크 관련 오류 또는 인스턴스에 특정한 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스할 수 없습니다. 인스턴스 이름이 올바르고 SQL Server 원격 연결을 허용하도록 구성되어 있는지 확인합니다.
공급자: TCP 공급자, 오류: 0
연결된 구성원이 일정 시간이 지날 때까지 올바르게 응답하지 않았거나, 연결된 호스트가 응답하지 않아 설정된 연결에서 오류가 발생하여 연결 시도가 실패했습니다.
Microsoft SQL Server, 오류: 10060

공급자: 명명된 파이프 공급자, 오류: 40 - SQL Server 대한 연결을 열 수 없습니다. SQL Server에 연결하는 동안 네트워크 관련 오류 또는 인스턴스에 특정한 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스할 수 없습니다. 인스턴스 이름이 올바르고 SQL Server 원격 연결을 허용하도록 구성되어 있는지 확인합니다.
공급자: 명명된 파이프 공급자, 오류: 40 - SQL Server에 대한 연결을 열 수 없습니다.
Microsoft SQL Server, 오류: 53
네트워크 경로를 찾지 못함

[Microsoft] [SQL Server Native Client 11.0]TCP 공급자: 대상 컴퓨터가 적극적으로 거부했기 때문에 연결할 수 없습니다. SQL Server Native Client 데이터 링크 오류
[Microsoft][SQL Server Native Client 11.0]TCP 공급자: 대상 컴퓨터에서 적극적으로 거부했기 때문에 연결할 수 없습니다
[Microsoft][SQL Server Native Client 11.0]로그인 시간 초과가 만료되었습니다.
[Microsoft][SQL Server Native Client 11.0]SQL Server에 연결하는 동안 네트워크 관련 또는 인스턴스 관련 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스할 수 없습니다. 인스턴스 이름이 올바른지와 SQL Server가 원격 연결을 허용하도록 구성되어 있는지 확인합니다. 자세한 내용은 SQL Server 온라인 설명서를 참조하세요.

"SQL Server가 없거나 액세스가 거부되었습니다"

이 오류는 일반적으로 클라이언트가 SQL Server 인스턴스를 찾을 수 없다는 것을 의미합니다. 이 문제는 다음 문제 중 하나 이상으로 인해 발생합니다.

  • SQL Server를 호스팅하는 컴퓨터의 이름이 올바르지 않습니다.
  • 인스턴스가 올바른 IP를 확인하지 않습니다.
  • TCP 포트 번호가 올바르게 지정되지 않았습니다.

참고

고가용성 시나리오에서 연결 문제를 해결하려면 다음 문서를 참조하세요.

오류 해결을 위한 정보 수집

오류 해결을 위한 실제 단계를 진행하기 전에 아래 옵션 중 하나를 사용하여 이 섹션에 나열된 정보를 수집하는 것이 좋습니다.

옵션 1: SQLCheck 도구를 사용하여 필요한 정보 수집

SQL Server 컴퓨터에 로컬로 로그인할 수 있고 관리자 액세스 권한이 있는 경우 Microsoft SQL Networking GitHub 저장소에서 SQLCheck를 사용합니다. 이 도구는 문제 해결에 필요한 대부분의 정보를 하나의 파일로 제공합니다. 도구 사용 및 수집 정보에 대한 자세한 내용은 도구 홈 페이지를 확인하세요. 권장되는 전제조건 및 체크리스트 페이지도 확인할 수 있습니다.

옵션 2: 다음 절차를 사용하여 개별적으로 데이터 수집

Configuration Manager에서 인스턴스 이름 가져오기

SQL Server 인스턴스를 호스팅하는 서버에서 SQL Server Configuration Manager를 사용하여 인스턴스 이름을 확인합니다.

참고

Configuration Manager는 SQL Server가 설치될 때 컴퓨터에 자동으로 설치됩니다. Configuration Manager 시작에 대한 지침은 SQL Server 및 Windows 버전에 따라 약간 다릅니다. 버전별 세부 정보는 SQL Server Configuration Manager를 참조하세요.

  1. SQL Server 인스턴스를 호스팅하는 컴퓨터에 로그인합니다.

  2. SQL Server 구성 관리자를 시작합니다.

  3. 왼쪽 창에서 SQL Server 서비스를 선택합니다.

  4. 오른쪽 창에서 데이터베이스 엔진 인스턴스의 이름을 확인합니다.

    • SQL SERVER(MSSQLSERVER)는 SQL Server 기본 인스턴스를 나타냅니다. 기본 인스턴스의 이름은 컴퓨터 이름>입니다<.
    • SQL SERVER(<인스턴스 이름>)는 명명된 SQL Server 인스턴스를 나타냅니다. 명명된 인스턴스의 이름은 컴퓨터 이름>\<인스턴스 이름>입니다<.

서버의 IP 주소 가져오기

다음 단계를 사용하여 SQL Server 인스턴스를 호스팅하는 컴퓨터의 IP 주소를 가져올 수 있습니다.

  1. 시작 메뉴에서 실행을 선택합니다. 실행 창에서 cmd를 입력한 다음 확인을 선택합니다.

  2. 명령 프롬프트 창에서 ipconfig/all을 입력한 다음 Enter 키를 누릅니다. IPv4 주소와 IPv6 주소를 적어둡니다.

    참고

    SQL Server는 IP 버전 4 프로토콜 또는 IP 버전 6 프로토콜을 사용하여 연결할 수 있습니다. 네트워크에서 둘 중 하나 또는 둘 다를 허용할 수 있습니다.

인스턴스의 TCP 포트 가져오기

대부분의 경우 TCP 프로토콜을 사용하여 다른 컴퓨터의 데이터베이스 엔진에 연결합니다. 인스턴스의 TCP 포트를 가져오려면 다음 단계를 따르세요.

  1. SQL Server를 실행하는 컴퓨터에서 SQL Server Management Studio를 사용하고 SQL Server 인스턴스에 연결합니다. 개체 탐색기에서 관리를 확장하고 SQL Server 로그를 확장한 다음 현재 로그를 두 번 클릭합니다.

  2. 로그 파일 뷰어의 도구 모음에서 필터를 선택합니다. 메시지에 텍스트 포함 상자에 서버가 수신 대기 중을 입력하고 필터 적용을 선택한 다음 확인을 선택합니다.

  3. ['any' <ipv4 1433>]에서 서버가 수신 대기 중인 것과 같은 메시지가 나열되어야 합니다.

    이 메시지는 SQL Server 인스턴스가 이 컴퓨터의 모든 IP 주소(IP 버전 4용)와 TCP 포트 1433에서 수신 대기 중임을 나타냅니다. (TCP 포트 1433은 일반적으로 데이터베이스 엔진 또는 SQL Server 기본 인스턴스에서 사용하는 포트입니다. SQL Server 인스턴스 하나만 이 포트를 사용할 수 있습니다. 둘 이상의 SQL Server 인스턴스가 설치된 경우 일부 인스턴스는 다른 포트 번호를 사용해야 합니다.) 연결하려는 SQL Server 인스턴스에서 사용하는 포트 번호를 적어둡니다.

    참고

    • IP 주소 127.0.0.1이 나열될 수 있습니다. 루프백 어댑터 주소라고 합니다. 동일한 컴퓨터의 프로세스만 IP 주소를 사용하여 연결할 수 있습니다.
    • 텍스트 편집기를 사용하여 SQL Server 오류 로그를 볼 수도 있습니다. 기본적으로 오류 로그는 Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOGERRORLOG.n 파일에 있습니다. 자세한 내용은 SQL Server 오류 로그 보기를 참조하세요.

1단계:인스턴스가 실행 중인지 확인

옵션 1: SQLCheck 도구의 출력 파일 사용

  1. SQLCheck 파일의 출력에서 "SQL Server 정보"를 검색합니다.

  2. "관심 서비스" 섹션의 이름인스턴스(명명된 인스턴스의 경우) 열에서 SQL Server 인스턴스를 찾고 시작됨 열을 사용하여 상태를 확인합니다. 값이 True이면 서비스가 시작됩니다. 그렇지 않으면 서비스가 현재 실행되고 있지 않습니다.

  3. 서비스가 실행되고 있지 않으면 SQL Server 관리 스튜디오, SQL Server Configuration Manager, PowerShell 또는 서비스 애플릿을 사용하여 서비스를 시작합니다.

옵션 2: SQL Server 구성 관리자 사용

인스턴스가 실행 중인지 확인하려면 SQL Server 구성 관리자에서 SQL Server 서비스를 선택하고 SQL Server 인스턴스의 기호를 확인합니다.

  • 녹색 화살표는 인스턴스가 실행 중임을 나타냅니다.
  • 빨간색 사각형은 인스턴스가 중지되었음을 나타냅니다.

인스턴스가 중지되면 인스턴스를 마우스 오른쪽 단추로 클릭하고 시작을 선택합니다. 그런 다음 서버 인스턴스가 시작되고 표시기가 녹색 화살표가 됩니다.

옵션 3: PowerShell 명령 사용

PowerShell에서 다음 명령을 사용하여 시스템에서 SQL Server 서비스의 상태를 확인할 수 있습니다.

Get-Service | Where {$_.status -eq 'running' -and $_.DisplayName -match "sql server*"}

다음 명령을 사용하여 오류 로그 파일에서 "SQL Server가 이제 클라이언트 연결에 사용할 준비가 되었습니다."라는 특정 문자열을 검색할 수 있습니다. 정보 메시지입니다. 사용자 작업은 필요하지 않습니다.":

Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog |select-string "SQL Server is now ready for client connections."

2단계: SQL Server Browser 서비스가 실행 중인지 확인

참고

이 단계는 명명된 인스턴스의 연결 문제를 해결하는 데만 필요합니다.

옵션 1: SQLCheck 도구의 출력 파일 사용

  1. SQLCheck 파일의 출력에서 "SQL Server 정보"를 검색합니다.

  2. "관심 서비스" 섹션의 이름 열에서 SQLBrowser를 검색하고 시작됨 열을 사용하여 상태를 확인합니다. 값이 True이면 서비스가 시작됩니다. 그렇지 않으면 서비스가 현재 실행되고 있지 않으므로 시작해야 합니다. 자세한 내용은 SQL Server 서비스 시작, 중지, 일시 중지, 재개, 다시 시작을 참조하세요.

옵션 2: SQL Server 구성 관리자 사용

명명된 인스턴스에 연결하려면 SQL Server Browser 서비스가 실행 중이어야 합니다. SQL Server Configuration Manager에서 SQL Server Browser 서비스를 찾아 실행 중인지 확인합니다. 실행되고 있지 않으면 서비스를 시작합니다. SQL Server Browser 서비스는 기본 인스턴스에 필요하지 않습니다.

사용자 환경에서 SQL Server Browser 서비스를 사용하는 방법에 대한 자세한 내용은 SQL Server Browser 서비스를 참조하세요.

SQL 서비스 중지 및 시작에 대한 자세한 내용은 SQL Server 서비스 시작, 중지, 일시 중지, 재개, 다시 시작을 참조하세요.

참고

용자 환경에서 SQL Server Browser 서비스를 실행할 수 없는 경우 SQL Server 브라우저 서비스 없이 명명된 SQL Server에 연결을 참조하세요.

3단계: 연결 문자열에서 서버 이름 확인

연결 문자열에 잘못된 서버 이름을 지정하면 오류가 발생하는 경우가 많습니다. 서버 이름이 이전 단계에서 검색한 이름과 일치하는지 확인합니다.

참고

SQLCheck 도구를 사용하는 경우 출력 파일의 컴퓨터 정보 섹션에서 NetBios 이름/FQDN 값을 확인합니다.

4단계: 클라이언트 시스템의 별칭 확인

별칭은 대체 이름으로 SQL Server에 연결할 때 또는 네트워크에 이름 확인 문제가 있을 때 클라이언트 환경에서 자주 사용됩니다. SQL Server Configuration Manager 또는 클라이언트 네트워크 유틸리티를 사용하여 만들어집니다. 잘못된 별칭으로 인해 응용 프로그램의 연결이 잘못된 서버에 연결되어 실패할 수 있습니다. 다음 방법을 사용하여 잘못된 별칭을 확인합니다. 클라이언트 시스템에서 도구(예: SQLCHECK)를 사용하여 클라이언트 시스템에서 별칭 및 기타 다양한 연결 관련 설정을 확인할 수도 있습니다.

참고

다음 옵션은 SQL Server Native Client를 사용하여 SQL Server에 연결하는 애플리케이션에만 적용됩니다.

옵션 1: SQLCheck 도구의 출력 파일 사용

  1. SQLCheck 출력 파일에서 SQL 별칭 문자열을 검색합니다. (이 문자열은 파일의 클라이언트 보안 및 드라이버 정보 섹션 내에 있음)

  2. 테이블의 항목을 검토합니다. 존재하지 않는 경우 컴퓨터에 별칭이 없습니다. 항목이 있는 경우, 정보를 검토하여 서버 이름 및 포트 번호가 올바른 값으로 설정되어 있는지 확인합니다.

출력 예제:
SQL 별칭:

Alias Name   Protocol   Server Name     Port   32-bit 

----------   --------   ------------    ----   ------ 

prodsql      TCP        prod_sqlserver  1430      

위의 내용은 prodsql이 포트1430에서 실행되는 prod_sqlserver라는 SQL Server 대한 별칭임을 나타냅니다.

옵션 2: SQL Server 구성 관리자에서 별칭 확인

  1. SQL Server 구성 관리자에서 SQL Server Native Client 구성을 확장하고 별칭을 선택합니다.
  2. 연결하려는 서버에 대한 별칭이 정의되어 있는지 확인합니다. 별칭이 있는 경우, 다음 단계를 수행합니다.
    1. 별칭의 속성 창을 엽니다.
    2. 별칭 이름 필드에서 값 이름을 변경하고(예: 서버 이름이 MySQL인 경우, MySQL_test로 이름 변경) 연결을 다시 시도합니다. 연결이 작동하는 경우, 별칭이 올바르지 않으며 더 이상 필요하지 않은 이전 구성에서 올 수 있습니다. 연결이 작동하지 않으면, 별칭의 이름을 원래 이름으로 다시 바꾸고 다음 단계로 이동합니다.
    3. 별칭에 대한 연결 매개 변수를 확인하고 올바른지 확인합니다. 다음과 같은 일반적인 시나리오로 인해 연결 문제가 발생할 수 있습니다.
      • 서버 필드의 IP 주소가 잘못되었습니다. IP 주소가 SQL Server 오류 로그 파일의 항목과 일치하는지 확인하세요.

      • 서버필드의 서버 이름이 잘못되었습니다. 예를 들어, 서버 별칭은 올바른 서버 이름을 가리킵니다. 그러나 서버 이름 매개 변수의 값이 올바르지 않으면 연결에 실패합니다.

      • 파이프 이름 형식이 잘못되었습니다(명명된 파이프 별칭을 사용한다고 가정).

        • Mydefaultinstance라는 기본 인스턴스에 연결할 때 파이프 이름은 \\Mydefaultinstance\pipe\sql\query여야 합니다.
        • 명명된 인스턴스 MySQL\Named에 연결할 때 파이프 이름은 \\MySQL\pipe\MSSQL$Named\sql\query여야 합니다.

옵션 3: SQL Server 클라이언트 네트워크 유틸리티에서 별칭 확인

  1. 실행 명령에 cliconfg.exe를 입력하여 Server 클라이언트 네트워크 유틸리티를 여십시오.
  2. 옵션 2: SQL Server 구성 관리자에서 별칭 확인의 2단계를 따릅니다.

5단계: 방화벽 구성 확인

기본 인스턴스 또는 명명된 인스턴스에 따라 방화벽 구성을 확인할 수 있습니다.

참고

네트워크에서 타사 방화벽을 사용하는 경우에도 개념이 적용됩니다. 그러나 SQL Server와의 통신에 필요한 포트를 허용하기 위해 방화벽 구성에 대한 자세한 내용은 네트워크 관리자와 작업하거나 방화벽 제품 설명서를 참조해야 할 수 있습니다.

SQL Server의 기본 인스턴스

기본 인스턴스는 일반적으로 포트 1433에서 실행됩니다. 일부 설치에서는 비표준 포트(1433 이외의 포트)를 사용하여 SQL 인스턴스를 실행합니다. 방화벽은 두 포트 중 하나를 차단할 수 있습니다. 포트 번호를 확인하려면 다음 단계를 따르세요.

  1. SQL 인스턴스가 실행 중인 포트를 확인하려면 인스턴스의 TCP 포트 가져오기를 참조하세요.
  • SQL Server가 포트 1433에서 수신 대기하도록 구성된 경우 클라이언트와 서버 간의 네트워크의 방화벽이 해당 포트의 트래픽을 허용하는지 확인하십시오. 데이터베이스 엔진 액세스에 대한 Windows 방화벽 구성을 검토하고 네트워크 관리자와 협력하여 필요한 솔루션을 구현합니다.

  • SQL Server 기본 인스턴스가 1433을 사용하지 않는 경우 <servername>,<portnumber> 형식을 사용하여 서버 이름에 SQL Server 포트 번호를 추가하고 작동 여부를 확인합니다. 예를 들어 SQL 인스턴스 이름이 MySQLDefaultinstance이며 포트 2000에서 실행됩니다. 서버 이름을 MySQLServer, 2000으로 지정하고 작동 여부를 확인합니다.

  • 작동하지 않으면 방화벽이 포트를 차단하고 있음을 나타냅니다. 데이터베이스 엔진 액세스에 대한 Windows 방화벽 구성의 지침에 따르거나 네트워크 관리자와 협력하여 방화벽 제외 목록에 포트를 추가할 수 있습니다.

    • 작동하는 경우 방화벽이 해당 포트를 통해 통신을 허용하고 있음을 나타냅니다. 애플리케이션의 연결 문자열에서 포트 번호와 서버 이름을 사용하려면 연결 문자열을 변경해야 합니다.

SQL Server의 명명된 인스턴스

SQL 인스턴스가 명명된 인스턴스인 경우, 동적 포트 또는 정적 포트를 사용하도록 구성할 수 있습니다. 두 경우 모두 기본 네트워크 라이브러리는 UDP 포트 1434를 통해 SQL Server 컴퓨터에서 실행되는 SQL Server Browser 서비스를 쿼리하여 명명된 인스턴스의 포트 번호를 열거합니다. 클라이언트와 서버 간의 방화벽이 이 UDP 포트를 차단하는 경우 클라이언트 라이브러리는 포트(연결 요구 사항)를 확인할 수 없으며 연결이 실패합니다. 연결을 확인하려면 다음 방법 중 하나를 사용할 수 있습니다:

  • 방법 1: 연결 문자열에 포트 번호를 지정하여 연결을 확인합니다.

    1. SQL 인스턴스가 실행 중인 포트를 확인하려면 인스턴스의 TCP 포트 가져오기를 참조하세요.

    2. <servername\instancename>,<portnumber> 형식의 서버 이름에 추가된 포트 번호를 사용하여 명명된 인스턴스에 연결하고 작동하는지 확인합니다. 예를 들어 SQL 인스턴스 이름이 MySQL\Namedinstance이고 포트 3000에서 실행되는 경우, 서버 이름을 MySQL\Namedinstance,3000으로 지정합니다.

      • 작동하는 경우 방화벽이 UDP 포트 1434를 차단하고 있거나 인스턴스가 SQL Server Browser에서 숨김에 있음을 나타냅니다.

      • 작동하지 않는 경우 다음 상황 중 하나를 나타냅니다.

        • UDP 포트 1434가 차단되거나 정적 포트가 차단되거나 둘 다 차단됩니다. UDP 포트인지 정적 포트인지 확인하려면 Portqry를 사용합니다.

        • 인스턴스는 SQL Server Browser 서비스에서 숨겨집니다.

  • 방법 2: PortQryUI 도구를 사용하여 연결을 확인합니다.

    명명된 인스턴스와 함께 PortQryUI 도구를 사용하고 결과 출력을 관찰합니다. UDP 포트 1434가 필터링되었다는 메시지가 나타날 수 있습니다. 이 메시지는 포트가 네트워크에서 차단되었음을 나타냅니다. 도구를 사용하는 방법에 대한 지침은 SQL Server PortQryUI 도구 사용을 참조하세요.

    SQL Server인스턴스가 동적 포트에서 수신하는지 또는 정적 포트에서 수신하는지 확인 그런 다음 시나리오와 관련된 다음 방법을 사용합니다. 확실하지 않은 경우 SQL Server 동적 포트 또는 정적 포트에서 수신 대기하는지 확인하는 방법을 참조하세요.

    • 시나리오 1: 동적 포트. 이 경우 SQL Server Browser 서비스가 시작되고 UDP 포트 1434가 클라이언트와 서버 간의 방화벽에서 차단되지 않았는지 확인합니다. 이러한 작업 중 하나도 수행할 수 없는 경우 SQL Server 인스턴스를 정적 포트로 전환하고 특정 TCP 포트에서 수신 대기하도록 서버 구성에 설명된 절차를 따라야 합니다.

    • 시나리오 2: 정적 포트 구성. SQL Server 브라우저가 실행되고 있지 않거나 방화벽에서 UDP 1434를 열 수 없습니다. 이 경우 연결 문자열에 정적 포트를 지정하고 방화벽이 포트를 차단하지 않도록 확인합니다. 자세한 내용은 데이터베이스 엔진 액세스에 대한 Windows 방화벽 구성을 검토하세요.

6단계: SQL Server에서 사용하도록 설정된 프로토콜을 확인합니다.

일부 SQL Server 설치에서는 관리자가 수동으로 사용하도록 설정하지 않는 한 다른 컴퓨터에서 데이터베이스 엔진에 연결할 수 없습니다. 다음 옵션 중 하나를 사용하여 필요한 프로토콜을 확인하고 사용하도록 설정하여 SQL Server 데이터베이스 엔진에 대한 원격 연결을 허용할 수 있습니다.

옵션 1: SQLCheck 도구의 출력 파일 사용

  1. SQLCheck 출력 파일에서 "SQL Server 인스턴스에 대한 세부 정보" 섹션을 검색하고 SQL Server 인스턴스에 대한 정보 섹션을 찾습니다.

  2. 섹션에서 다음 표에 나열된 값을 찾아 SQL Server 프로토콜을 사용할 수 있는지 확인합니다.

    값 이름 영향 추가 정보
    공유 메모리 사용 참 또는 거짓 일 수 있으며 로컬 연결에만 영향을 미칩니다. 공유 메모리 프로토콜을 사용하여 유효한 연결 문자열 만들기
    명명된 파이프 사용 false이면, 명명된 파이프를 사용하는 로컬 및 원격 연결이 모두 실패합니다. 네트워크 프로토콜 선택
    TCP 활성화됨 false이면 TCP/IP를 사용하는 로컬 및 원격 연결이 모두 실패합니다.
    참고 대부분의 SQL Server 설치는 서버와 클라이언트 간의 통신 프로토콜로 TCP/IP를 사용합니다.
    네트워크 프로토콜 선택
  3. SQL Server 구성 관리자 또는 SQL Server PowerShell을 사용하여 필요한 프로토콜을 활성화합니다. 자세한 내용은 서버 네트워크 프로토콜 사용 또는 사용 안 함을 참조하세요.

    참고

    프로토콜을 활성화한 후 변경 내용이 적용되려면 데이터베이스 엔진을 중지하고 다시 시작해야 합니다.

옵션 2: SQL Server 구성 관리자 사용

SQL Server 구성 관리자를 사용하여 다른 컴퓨터에서 연결을 사용하도록 설정하려면 다음 단계를 따르세요.

  1. SQL Server 구성 관리자를 시작합니다.

  2. 왼쪽 창에서 SQL Server 네트워크 구성을 확장한 다음 연결할 SQL Server 인스턴스를 선택합니다. 오른쪽 창에는 사용 가능한 연결 프로토콜이 나열됩니다. 공유 메모리는 일반적으로 사용하도록 설정됩니다. 동일한 컴퓨터에서만 사용할 수 있으므로 대부분의 설치에서는 공유 메모리를 사용하도록 설정합니다. 다른 컴퓨터에서 SQL Server를 연결하려면 TCP/IP를 사용합니다. TCP/IP를 사용하도록 설정하지 않은 경우 TCP/IP를 마우스 오른쪽 단추로 클릭한 다음 사용을 선택합니다.

  3. 모든 프로토콜에 대해 사용하도록 설정된 설정을 변경한 경우 데이터베이스 엔진을 다시 시작합니다. 왼쪽 창에서 SQL Server 서비스를 선택합니다. 오른쪽 창에서 데이터베이스 엔진 인스턴스를 마우스 오른쪽 버튼으로 클릭한 다음 다시 시작을 선택합니다.

7단계: TCP/IP 연결 테스트

TCP/IP를 사용하여 SQL Server에 연결하려면 Windows에서 연결을 설정해야 합니다. 다음 단계에 따라 ping 도구를 사용하여 TCP 연결을 테스트할 수 있습니다.

  1. 시작 메뉴에서 실행을 선택합니다. 실행 창에서 cmd를 입력하고 확인을 선택합니다.

  2. 명령 프롬프트 창에서 SQL Server 실행 중인 컴퓨터의 IP 주소를 입력 ping 합니다. 예시:

    • IPv4: ping 192.168.1.101
    • IPv6: ping fe80::d51d:5ab5:6f09:8f48%11
  3. 네트워크가 제대로 구성된 경우 몇 가지 추가 정보를 ping 반환 Reply from <IP address>합니다. pingDestination host unreachable 또는 Request timed out을 반환하면 TCP/IP가 올바르게 구성되지 않은 것입니다. 이 시점에서 오류는 클라이언트 컴퓨터, 서버 컴퓨터 또는 라우터와 같은 네트워크에 대한 문제를 나타냅니다. 네트워크 문제를 해결하려면 TCP/IP 문제에 대한 고급 문제 해결을 참조하세요.

  4. IP 주소를 사용하여 ping 테스트에 성공하면 컴퓨터 이름을 TCP/IP 주소로 확인할 수 있는지 테스트합니다. 클라이언트 컴퓨터의 명령 프롬프트 창에서 ping 및 SQL Server 실행 중인 컴퓨터의 이름을 입력합니다. 예를 들면 ping newofficepc와 같습니다.

  5. IP 주소에 대한 ping이 성공했지만 컴퓨터 이름에 대한 ping이 Destination host unreachable 또는 Request timed out을 반환하는 경우 클라이언트 컴퓨터에 캐시된 이전(부실) 이름 확인 정보가 있을 수 있습니다. DNS(동적 이름 확인) 캐시를 지우려면 ipconfig /flushdns을 입력합니다. 그런 다음 이름으로 컴퓨터를 다시 ping합니다. DNS 캐시가 비어 있으면 클라이언트 컴퓨터는 서버 컴퓨터의 IP 주소에 대한 최신 정보를 확인합니다.

  6. 네트워크가 제대로 구성된 경우 몇 가지 추가 정보를 ping 반환 Reply from <IP address>합니다. IP 주소로 서버 컴퓨터를 성공적으로 ping할 수 있지만 컴퓨터 이름으로 ping할 때 Destination host unreachable 또는 Request timed out과 같은 오류가 발생하면 이름 확인이 올바르게 구성되지 않은 것입니다. 자세한 내용은 기본 TCP/IP 문제 해결 방법을 참조하세요. SQL Server에 연결하는 데 성공적인 이름 확인은 필요하지 않습니다. 그러나 컴퓨터 이름을 IP 주소로 확인할 수 없는 경우 IP 주소를 지정하려면 연결해야 합니다. 이름 확인은 나중에 수정할 수 있습니다.

참고

Test-NetConnection 또는 Test-Connection cmdlet을 사용하여 컴퓨터에 설치된 PowerShell 버전에 따라 TCP 연결을 테스트할 수도 있습니다. PowerShell cmdlet에 대한 자세한 내용은 Cmdlet 개요를 참조하세요.

8단계: 로컬 연결 테스트

다른 컴퓨터의 연결 문제를 해결하기 전에 SQL Server 실행 중인 컴퓨터에 로컬로 설치된 클라이언트 애플리케이션에서 연결하는 기능을 테스트합니다. 로컬 연결은 네트워크 및 방화벽 문제를 방지합니다.

이 절차를 수행하려면 SQL Server Management Studio가 필요합니다. Management Studio가 설치되어 있지 않으면 SQL Server Management Studio(SSMS) 다운로드를 참조하세요.

Management Studio를 설치할 수 없는 경우 sqlcmd.exe 유틸리티를 사용하여 연결을 테스트할 수 있습니다. sqlcmd.exe는 데이터베이스 엔진과 함께 설치됩니다. sqlcmd.exe에 대한 자세한 내용은 sqlcmd 유틸리티를 참조하세요.

  1. SQL Server에 액세스할 수 있는 로그인을 사용하여 SQL Server가 설치된 컴퓨터에 로그인합니다. 설치하는 동안 SQL Server 하나 이상의 로그인을 SQL Server 관리자로 지정해야 합니다. 관리자를 모르는 경우 시스템 관리자가 잠겨 있을 때 SQL Server에 연결을 참조하십시오.

  2. 시작 페이지에서 SQL Server Management Studio를 입력하거나 이전 버전의 Windows 시작 메뉴에서 모든 프로그램을 선택하고 Microsoft SQL Server를 선택한 다음 SQL Server Management Studio를 선택합니다.

  3. 연결 드롭다운 메뉴에서 데이터베이스 엔진을 선택합니다. 인증 상자에서 Windows 인증을 선택합니다. 서버 이름 상자에 다음 연결 유형 중 하나를 입력합니다.

    에 연결 유형 예시
    기본 인스턴스 <computer name> ACCNT27
    명명된 인스턴스 <computer name\instance name> ACCNT27\PAYROLL

    참고

    동일한 컴퓨터의 클라이언트 애플리케이션에서 SQL Server 연결하는 경우 공유 메모리 프로토콜이 사용됩니다. 공유 메모리는 로컬 명명된 파이프의 한 유형이므로 파이프와 관련된 오류가 발생할 수 있습니다

  4. 이 시점에서 오류가 발생하면 계속하기 전에 오류를 해결해야 합니다. 로그인에 연결할 수 있는 권한이 없을 수 있습니다. 기본 데이터베이스가 누락될 수 있습니다.

    참고

    일부 오류 메시지가 의도적으로 클라이언트에 전달되므로 충분한 정보 없이는 문제를 해결할 수 없습니다. 이는 공격자에게 SQL Server 대한 정보를 제공하지 않도록 하기 위한 보안 기능입니다. 오류에 대한 세부 정보를 보려면 SQL Server 오류 로그를 참조하세요.

  5. 오류 18456 사용자의 로그인 실패가 나타나는 경우 온라인 설명서 문서 MSSQLSERVER_18456에는 오류 코드에 대한 추가 정보가 포함됩니다. 아론 버트런드의 블로그에는 문제 해결 오류 18456(외부 링크)의 광범위한 오류 코드 목록도 있습니다. 개체 탐색기관리 섹션에서 SSMS(연결할 수 있는 경우)를 사용하여 오류 로그를 볼 수 있습니다. 그렇지 않으면 Windows 메모장 프로그램을 사용하여 오류 로그를 볼 수 있습니다. 기본 위치는 버전에 따라 다르며 설치 중에 변경할 수 있습니다. SQL Server 2019 (15.x)의 기본 위치는 C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\ERRORLOG입니다.

  6. 공유 메모리를 사용하여 연결할 수 있는 경우 TCP를 사용하여 연결을 테스트합니다. 이름 앞에 tcp:을 지정하여 TCP 연결을 강제 적용할 수 있습니다. 다음은 이와 관련된 두 가지 예입니다:

    에 연결: 유형: 예제:
    기본 인스턴스 tcp:<computer name> tcp:ACCNT27
    명명된 인스턴스 tcp:<computer name/instance name> tcp:ACCNT27\PAYROLL
  7. TCP 대신 공유 메모리를 사용하여 연결할 수 있는 경우 TCP 문제를 해결해야 합니다. 가장 가능성이 높은 문제는 TCP가 비활성화 상태라는 것입니다. TCP를 활성화하려면 6단계: SQL Server에서 사용하도록 설정된 프로토콜을 확인합니다.

  8. 관리자 계정 이외의 계정으로 연결하는 것이 목표인 경우 관리자로 연결하여 시작할 수 있습니다. 그런 다음 클라이언트 응용 프로그램에서 사용하는 Windows 인증 로그인 또는 SQL Server 인증 로그인으로 다시 연결해보세요.

9단계: 원격 연결 테스트

동일한 컴퓨터에서 TCP를 사용하여 연결할 수 있게 되면 클라이언트 컴퓨터에서 연결을 시도해 보세요. 어떤 클라이언트 프로그램도 사용할 수 있지만, 복잡성을 방지하려면 클라이언트에 SQL Server 관리 도구를 설치하세요. 설치 후 SQL Server Management Studio 사용하세요.

  1. 클라이언트 컴퓨터에서 SQL Server Management Studio를 사용하고 IP 주소와 포트 번호 형식의 IP 주소 및 TCP 포트 번호를 사용하여 연결을 시도합니다. 예를 들면 192.168.1.101,1433와 같습니다. 이 연결에 실패하면 다음 문제들 중 하나가 발생할 수 있습니다.

  2. IP 주소 및 포트 번호를 사용하여 연결할 수 있으면, 다음 시나리오를 검토합니다:

    • 1433 이외의 포트에서 기본 인스턴스에 연결되어 있는 경우, 연결 문자열의 포트 번호를 사용하거나 클라이언트 머신에 명령어 앨리어스를 만들어 기본 인스턴스에 연결해야 합니다. SQL Server Browser 서비스는 기본 인스턴스의 포트를 열거할 수 없습니다.

    • 명명된 인스턴스에 연결하는 경우 IP 주소 백슬래시 인스턴스 이름 형식으로 인스턴스에 연결합니다. (예: 192.168.1.101\<instance name>.) 이 작업이 작동하지 않으면 포트 번호가 클라이언트에 반환되지 않습니다. 이 문제는 명명된 인스턴스의 포트 번호를 클라이언트에 제공하는 SQL Server Browser 서비스와 관련이 있습니다. 해결 방법은 다음과 같습니다.

      • SQL Server Browser 서비스를 시작합니다. SQL Server 구성 관리자 브라우저를 시작하려면 지침을 참조하세요.
      • SQL Server Browser 서비스가 방화벽에 의해 차단되고 있습니다. 방화벽에서 UDP 포트 1434를 엽니다. 5단계: 방화벽 구성 확인 섹션으로 돌아가기. TCP 포트가 아닌 UDP 포트를 열고 있는지 확인합니다.
      • UDP 포트 1434 정보가 라우터에 의해 차단되고 있습니다. UDP 통신(사용자 데이터그램 프로토콜)은 라우터를 통과하도록 설계되지 않았으며 네트워크가 우선 순위가 낮은 트래픽으로 채워지지 않도록 합니다. UDP 트래픽을 전달하도록 라우터를 구성하거나 연결할 때마다 포트 번호를 제공할 수 있습니다.
      • 클라이언트 컴퓨터가 Windows 7, Windows Server 2008 또는 최신 운영 체제를 사용하는 경우 서버의 응답이 쿼리된 다른 IP 주소에서 반환되기 때문에 클라이언트 운영 체제가 UDP 트래픽을 삭제할 수 있습니다. 이 작업은 "느슨한 원본 매핑"을 차단하는 보안 기능입니다. 자세한 내용은 온라인 설명서 문서 문제 해결: 시간 제한 만료여러 서버 IP 주소 섹션을 참조하세요. (이 문서는 SQL Server 2008 R2에서 온 것이지만 보안 주체는 여전히 적용됩니다. 연결할 때마다 올바른 IP 주소를 사용하거나 포트 번호를 제공하도록 클라이언트를 구성할 수 있습니다.)
  3. IP 주소(또는 명명된 인스턴스의 IP 주소 및 인스턴스 이름)를 사용하여 연결할 수 있으면 컴퓨터 이름(또는 명명된 인스턴스의 컴퓨터 이름 및 인스턴스 이름)을 사용하여 연결을 시도합니다. TCP/IP 연결을 강제로 적용하려면 컴퓨터 이름 앞에 배치 tcp: 합니다. 예를 들어, 이름이 ACCNT27인 컴퓨터의 기본 인스턴스에 대해 tcp:ACCNT27을 사용합니다. PAYROLL이라는 명명된 인스턴스의 경우 해당 컴퓨터에서 tcp:ACCNT27\PAYROLL을 사용합니다. IP 주소를 사용하지만 컴퓨터 이름을 사용하지 않고 연결할 수 있는 경우 이름 확인 문제가 있습니다. 7단계: TCP/IP 연결 테스트 섹션으로 돌아가기.

  4. TCP를 강제하는 컴퓨터 이름을 사용하여 연결할 수 있게 되면 TCP를 강제하지 않고 컴퓨터 이름을 사용하여 연결을 시도합니다. 예를 들어 기본 인스턴스의 경우 CCNT27과 같은 컴퓨터 이름만 사용합니다. 명명된 인스턴스의 경우 ACCNT27\PAYROLL와 같은 컴퓨터 이름 및 인스턴스 이름을 사용합니다. TCP를 강제하는 동안 연결할 수 있지만 TCP를 강제하지 않고 연결할 수 있는 경우 클라이언트는 명명된 파이프와 같은 다른 프로토콜을 사용할 수 있습니다. 이 문제를 해결하려면 다음 단계를 따르세요.

    1. 클라이언트 컴퓨터에서 SQL Server 구성 관리자 사용합니다. 왼쪽 창에서 SQL Native Client <버전> 구성을 확장한 다음 클라이언트 프로토콜을 선택합니다.
    2. 오른쪽 창에서 TCP/IP가 사용하도록 설정되어 있는지 확인합니다. TCP/IP를 사용하지 않도록 설정한 경우 TCP/IP를 마우스 오른쪽 단추로 클릭하고 사용을 선택합니다.
    3. TCP/IP의 프로토콜 순서가 명명된 파이프(또는 이전 버전의 VIA) 프로토콜보다 작은지 확인합니다. 일반적으로 공유 메모리를 주문 1로, TCP/IP를 주문 2로 유지해야 합니다. 공유 메모리는 클라이언트와 SQL Server가 동일한 컴퓨터에서 실행되는 경우에만 사용됩니다. 활성화된 모든 프로토콜은 성공할 때까지 순서대로 시도되지만 연결이 동일한 컴퓨터에 없는 경우 공유 메모리는 건너뜁니다.

참고 항목