일관된 SQL Server 네트워크 연결 문제
참고 항목
문제 해결을 시작하기 전에 전제조건을 확인하고 체크리스트를 검토하는 것이 좋습니다.
이 문서는 SQL Server의 네트워크 연결 오류를 해결하는 데 도움이 됩니다. 이러한 오류는 매번 일관되고 반복 가능합니다. SQL Server가 TCP를 사용하도록 설정하지 않거나 연결을 차단하는 방화벽과 같은 일부 구성 문제를 가리킵니다. 이 문제 해결은 대부분의 데이터 센터에서 가장 일반적인 연결 형식이기 때문에 원격 TCP 연결에 중점을 두지만 많은 기술을 명명된 파이프에도 적용할 수 있습니다.
일반적인 오류 메시지
가장 일반적인 오류 메시지는 다음과 같습니다.
-
통신 링크 오류입니다.
-
일반 네트워크 오류입니다.
-
지정된 네트워크 이름에 연결할 수 없습니다.
-
SQL Server가 없거나 액세스가 거부되었습니다. (인증 오류일 수도 있습니다.)
-
SQL Server에 연결하는 중에 네트워크 관련 오류 또는 인스턴스별 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스할 수 없습니다. 인스턴스 이름이 올바르고 SQL Server가 원격 연결을 허용하도록 구성되어 있는지 확인합니다.
-
서버/인스턴스를 지정하는 동안 오류가 발생했습니다.
-
SQL Server Microsoft SQL Server에 대한 연결을 열 수 없습니다. 오류:53. 네트워크 경로를 찾을 수 없습니다.
-
대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다.
문제의 범위를 포커스가 있는 영역으로 좁히기
다음 단계는 문제 해결을 포커스가 있는 영역으로 좁히는 데 도움이 됩니다.
- 클라이언트: 애플리케이션, 연결 문자열, 드라이버(TLS(전송 계층 보안) 1.2 부족), SQL 별칭(64/32비트), 호스트 파일 및 잘못된 DNS(도메인 이름 시스템) 접미사(전체 이름 연결, 짧은 이름 실패).
- SQL Server: 데이터베이스 엔진, 사용 프로토콜 및 방화벽.
- 네트워크: DNS 별칭, 게이트웨이, 라우터 및 방화벽.
1. SSMS(SQL Server Management Studio) 및 TCP를 사용하여 SQL Server에 로컬로 연결할 수 있나요?
예를 들어 다음과 같은 tcp:sqlprod01.contoso.com,1433
형식tcp:<ServerName>.<DomainName>.COM,1433
의 연결 문자열 사용합니다.
참고 항목
tcp
서버 이름이 소문자여야 하기 전에 추가되었습니다.
그렇다면 SQL Server가 잘 작동합니다. 이 문제는 방화벽, 네트워크 또는 클라이언트와 관련이 있습니다.
그렇지 않은 경우 이 문제는 SQL Server 서비스와 관련이 있습니다.
2. 텔넷을 사용하여 클라이언트 컴퓨터에서 SQL Server 포트에 연결할 수 있나요?
예를 들어 SQL Server 인스턴스에 대한 텔넷 연결을 설정하는 명령은 다음과 같습니다telnet <ServerName>.<DomainName>.COM 1433
.
그렇다면 이 문제는 드라이버/공급자, 보안/SSL(Secure Sockets Layer), SQL 별칭 또는 애플리케이션과 관련이 있습니다.
그렇지 않은 경우 1단계가 작동하는 경우 호스트 파일, 네트워크 또는 방화벽과 관련된 문제가 발생합니다.
명령으로 사용할 수 없는 경우
telnet
Windows 기능으로 추가합니다. 다시 부팅할 필요가 없습니다.최신 버전의 Windows에는 Test-NetConnection PowerShell 명령이 있습니다.
예를 들어 명령을
Test-NetConnection <ServerName>.<DomainName>.com -Port 1433
사용하여 SQL Server 인스턴스에 대한 네트워크 연결을 테스트합니다.
3. 2단계가 작동하는 경우 UDL 파일을 사용하여 서버에 연결할 수 있나요?
그렇다면 이 문제는 잘못된 연결 문자열 같은 애플리케이션 또는 UDL(유니버설 데이터 링크) 파일에 사용된 공급자와 다른 경우 애플리케이션에서 사용하는 공급자와 관련이 있습니다.
그렇지 않은 경우 문제는 클라이언트와 관련이 있습니다.
4. 다른 클라이언트가 SQL Server에 연결할 수 있나요?
그렇다면 이 문제는 방화벽, 네트워크, TLS 1.2 또는 클라이언트와 관련이 있습니다.
그렇지 않은 경우 문제는 방화벽 또는 서버와 관련이 있습니다.
5. 클라이언트가 다른 서버에 연결할 수 있나요?
그렇다면 이 문제는 방화벽, 네트워크, TLS 1.2 또는 서버와 관련이 있습니다.
그렇지 않은 경우 방화벽, 네트워크 또는 TLS 1.2와 관련된 문제입니다.
SQL Server Service
문제가 SQL Server 서비스와 관련된 경우 다음 단계를 수행합니다.
작업 관리자에서 실행 중인 서비스 프로세스(sqlserver.exe)의 유효성을 검사합니다. (또는 여러 인스턴스가 설치된 경우 SQL Server 구성 관리자 또는 services.msc를 통해 확인합니다.)
실행되지 않는 경우 인스턴스를 시작해 봅니다. 미러 또는 클러스터형 구성인 경우 주 노드 또는 활성 노드에 있는지 확인합니다. 장애 조치(failover) 또는 항상 클러스터에서 클러스터 관리자를 사용하여 리소스가 온라인 상태인지 확인합니다.
애플리케이션 이벤트 로그, 클러스터 로그 또는 SQL Server ERRORLOG 파일이 실행 가능한 치명적인 오류를 나타내는지 확인합니다.
SQL Server 구성 관리자 SQL Server ERRORLOG 파일에서 예상되는 프로토콜이 사용하도록 설정되어 있는지 확인합니다(다음 샘플 참조).
그렇지 않은 경우 사용하도록 설정하고 SQL Server를 다시 시작합니다. 원격 연결이 허용되는 경우 항상 TCP를 사용하도록 설정해야 합니다.
2013-11-20 09:42:03.90 Server Server is listening on [ 'any' <ipv6> 1433]. 2013-11-20 09:42:03.90 Server Server is listening on [ 'any' <ipv4> 1433]. 2013-11-20 09:42:03.94 Server Server local connection provider is ready to accept connection on [ \\.\pipe\SQLLocal\KJ]. 2013-11-20 09:42:03.94 Server Server named pipe provider is ready to accept connection on [ \\.\pipe\MSSQL$KJ\sql\query].
SSMS, UDL 또는 ODBC 데이터 원본 관리자 연결에서 서버 이름을 형식
tcp:<ServerName>.<DomainName>.com,1433
으로 지정하여 SQL Server 브라우저를 무시합니다.참고 항목
FQDN(정규화된 도메인 이름)
tcp:
및 포트 번호를 사용하여 연결을 만드는 것이 가장 안정적이고 복원력 있는 방법입니다.tcp:
는 소문자여야 합니다.연결에 성공하면 다음을 수행합니다.
- SQL Server 브라우저가 실행 중인지 확인합니다. SQL Server가 포트 1433에서 수신 대기하는 기본 인스턴스인 경우 실행할 필요가 없습니다. 포트 번호를 제거하고 계속 작동할 수 있습니다.
- 접두사를 제거
tcp:
하면 실패하는 경우 기본적으로 명명된 파이프를 통해 연결할 수 있습니다. 서버 이름으로 사용하여np:hostname\<ServerName>
유효성을 검사할 수 있습니다. - NetBIOS 이름 사용이 실패하면 네트워크 구성에서 NetBIOS 이름 또는 잘못된 DNS 접미사를 재정의하는 SQL 별칭이 있을 수 있습니다. 또한 32비트 별칭을 확인합니다.
SSMS 연결에 실패하면 UDL 파일 또는 ODBC 데이터 원본 관리자를 통해 연결을 시도합니다.
- 호스트 이름 대신 서버의 IP 주소를 사용해 보세요. 서버가 클러스터되지 않고 "any"에서 수신 대기하는 경우에도 127.0.0.1을 사용해 볼 수 있습니다.
- 다른 드라이버를 사용해 보세요. 최신 드라이버는 TLS 1.2를 지원하고 더 나은 오류 메시지를 제공합니다.
- 다른 프로토콜을 시도합니다.
tcp:<ServerName>.<DomainName>.com,1433
,np:<ServerName>.<DomainName>.com\<InstanceName>
또는lpc:<ServerName>.<DomainName>.com\<InstanceName>
. SQL Server 구성 관리자 사용하여 변경합니다. 그런 다음 SQL Server를 다시 시작하고 ERORLOG 파일을 사용하여 변경 내용을 확인합니다. - SQL Server(2014 이하)가 TLS 1.2를 지원하도록 업그레이드되었나요? TLS 1.2를 지원하도록 클라이언트가 업그레이드되었나요? 이러한 프로토콜을 사용할 수 있나요?
- 모든 Windows 컴퓨터에서 SQL Server 구성 관리자 또는 cliconfg.exe SQL 별칭을 확인합니다. 64비트 및 32비트 별칭을 확인합니다.
- 오류 로그 파일에서 데이터베이스를 사용할 수 없거나 복구 중인 것과 같은 오류 메시지를 확인합니다.
- SQL Server가 예상 포트를
NETSTAT
소유하고 있는지 확인하려면 출력을 확인합니다. 예를 들어 관리자 권한이 있는 명령 프롬프트에서 실행NETSTAT -abon > c:\temp\ports.txt
합니다.
SQL Server가 1433 이외의 포트를 사용하는 경우:
포트 번호를 지정하여 연결할 수 있지만 포트 번호를 생략할 때는 연결할 수 없는 경우 SQL Server 브라우저 문제입니다. 즉, SQL Browser 서비스는 연결하려는 SQL Server 인스턴스에 대한 올바른 포트 번호를 제공할 수 없습니다. SQL Browser 서비스를 다시 시작하여 해당 정보를 새로 고쳐야 할 수도 있습니다.
포트 번호를 지정하는 경우에도 연결할 수 없고 원격으로 연결할 때만 발생하는 경우 방화벽 문제입니다. 방화벽 설정을 확인하고 포트가 인바운드 및 아웃바운드 연결에 허용되는지 확인해야 합니다. SQL Server 애플리케이션 또는 서비스가 방화벽을 통해 통신할 수 있도록 방화벽 규칙을 만들어야 할 수도 있습니다.
Always On을 사용하는 경우 수신기에 연결해도 SQL Server 브라우저가 사용되지 않으므로 연결 문자열 포트 번호를 지정해야 합니다. 작동하지 않는 경우 일반 SQL 포트의 주 노드에 직접 연결해 보세요. 이 문제가 작동하는 경우 문제는 수신기와 관련이 있습니다.
위의 메서드가 작동하지 않는 경우 SQL Server 컴퓨터를 다시 시작합니다.
최악의 시나리오는 SQL Server 서비스를 중지하거나, 새 인스턴스를 설치하거나, 컴퓨터를 다시 빌드한 다음, 데이터베이스를 다시 연결하거나 백업에서 복원하는 것입니다. SSISDB 데이터베이스와 같은 TDE(투명한 데이터 암호화)를 사용하는 경우 이 단계를 수행하기 전에 암호화 키가 저장되어 있는지 확인합니다. 다시 빌드가 때로는 난해한 문제의 근본 원인 분석보다 빠를 수 있으므로 옵션으로 제공됩니다. 클러스터형 설치의 경우 노드가 대체 노드에서 실행되는 동안 노드를 다시 빌드할 수 있으므로 영향이 적을 수 있습니다.
방화벽
일반적으로 방화벽의 기본 동작은 SQL Server 및 SQL Server 브라우저 포트를 차단하는 것입니다. 이 경우 로컬 연결이 성공하는 동안 원격 연결이 실패합니다. 를 사용하여 Test-NetConnection
테스트합니다. 지원되는 모든 버전의 Windows에서 사용할 수 있습니다.
Test-NetConnection <ServerName> -Port 1433
Test-NetConnection <ServerName>.<DomainName>.com -Port 1433
ERRORLOG 파일에서 SQL Server가 수신 대기 중인 포트를 확인해야 합니다. Windows 기능으로 추가하여 사용하도록 설정 telnet
해야 할 수 있습니다. 다시 부팅할 필요가 없습니다. SQL Server도 TCP에서 수신 대기해야 합니다. PortQry
는 Microsoft 다운로드 사이트에서 다운로드할 수 있습니다. SQL Server 브라우저를 사용하는 경우 방화벽 및 SQL Server TCP 포트에서 UDP 포트 1434가 열려 있는지 확인합니다.
네트워크
클라이언트 또는 애플리케이션 서버는 다른 컴퓨터의 SQL Server에 연결할 수 있습니다. 특정 네트워크 또는 서브넷의 여러 클라이언트가 서브넷 외부 또는 다른 특정 서브넷의 서버에 연결하는 데 문제가 있는 것일 수 있습니다. 네트워크 방화벽은 특정 클라이언트가 특정 SQL Server에 연결하지 못하도록 차단할 수 있습니다. 예를 들어 클라이언트는 다른 SQL Server에 연결할 수 있고 다른 클라이언트는 문제 SQL Server에 연결할 수 있습니다.
VPN
문제가 VPN(가상 사설망)에서만 발생하고 랩톱을 사내로 가져올 때가 아닌 경우 VPN 공급업체는 이 문제를 해결해야 합니다. 클라이언트 및 서버 네트워크 추적을 가져올 수 있습니다. 이 추적은 VPN에서 발생하는 문제의 유형을 표시하는 데 도움이 될 수 있습니다. 예를 들어 삭제된 패킷이 가장 가능성이 높습니다. VPN은 클라이언트와 서버 간의 내부 라우팅을 변경하여 연결을 차단하는 다른 네트워크 디바이스에 노출할 수도 있습니다. 중간 디바이스에서 네트워크 추적을 수집하면 네트워크를 세분화하여 문제를 격리할 수 있습니다. tracert 명령은 라우팅을 표시할 수 있습니다.
클라이언트
문제가 클라이언트와 관련된 경우 다음 표시기가 표시될 수 있습니다.
다른 클라이언트는 일반적으로 서버에 연결할 수 있습니다.
이 컴퓨터에서 연결할 수 있는 애플리케이션은 없습니다.
UDL 또는 ODBC 데이터 원본 관리자를 사용하여 연결할 수 없습니다.
아웃바운드 방화벽 규칙 또는 잘못된 기본 DNS 접미사로 인해 발생할 수 있습니다. 예를 들어 정규화된 서버 이름으로 테스트해 보세요.
Test-NetConnection <ServerName> -Port 1433 Test-NetConnection <ServerName>.<DomainName>.com -Port 1433
TLS 문제일 수 있습니다. 예를 들어 서버는 TLS 1.2를 사용하며 클라이언트 드라이버는 업그레이드되지 않았습니다.
호스트 파일 항목, SQL 별칭 또는 다른 서버에 연결을 안내하는 DNS 별칭이 있을 수 있습니다. ping 및
telnet
. 작동하지만 드라이버가 실패하는 경우 SQL 별칭 또는 TLS 문제가 의심됩니다.
드라이버
드라이버와 관련된 문제가 있는 경우 다른 드라이버를 사용해 보세요.
일부 드라이버가 작동하고 다른 드라이버가 실패하는 경우 TLS 문제를 의심합니다. Microsoft OLE DB Driver for SQL Server 또는 ODBC Driver 17 for SQL Server와 같은 최신 드라이버를 다운로드하고 사용해 보세요.
.NET을 사용하는 경우 최신 버전의 프레임워크를 사용하고 있는지 확인합니다. 그래도 실패하는 경우 더 나은 오류 메시지를 제공해야 합니다. SQL Server와 독립적인 최신 버전의 SQL Server Management Studio 를 다운로드하여 모든 클라이언트에 설치할 수도 있습니다. 클래스를
SqlClient .NET
사용합니다.
사용자
문제가 사용자와 관련된 경우 다른 사용자가 이 컴퓨터에 로그인하도록 합니다.
연결에 성공하면 실패한 사용자에 대한 다른 사항을 확인합니다. 예를 들어 Windows 사용자 프로필이 손상되었거나 사용자가 다른 OU(조직 구성 단위) 또는 도메인에 속할 수 있습니다.
여러 도메인의 사용자가 있는 경우 서버와 동일한 도메인의 사용자를 사용해 보세요. 일반적으로 사용자 문제로 인해 인증 오류가 발생하며 다른 문제 해결 워크플로가 있습니다.
인증 문제가 아닌 경우 프로세스 모니터 로그는 연결에 영향을 주는 로컬 권한 문제를 식별하는 데 도움이 될 수 있습니다. 예를 들어 사용자에게는 DSN(데이터 원본 이름) 또는 다른 드라이버로의 일종의 레지스트리 리디렉션, 로컬 권한 제한 또는 연결 실패를 설명할 수 있는 항목이 있습니다.
애플리케이션
특정 애플리케이션만 실패하고 UDL 파일이 성공하면 드라이버 문제이거나 애플리케이션에 잘못된 연결 문자열 있을 수 있습니다. 애플리케이션 개발 팀 또는 타사 공급업체가 연결 문자열 확인합니다. 프로세스 탐색기를 www.sysinternals.com
사용하여 고객이 확실하지 않은 경우 어떤 드라이버가 사용되고 있는지 확인할 수 있습니다.
캡처할 추적 도구
클라이언트 및 서버 네트워크 추적을 캡처합니다. 클라이언트와 서버 모두에서 SQL 추적을 동시에 실행합니다.
NCAP 드라이버와 함께 WireShark를 설치하여 클라이언트와 서버가 동일한 컴퓨터에 있을 때 추적합니다.
조직에는 사용자가 참여할 수 있는 자체 네트워크 인프라 팀이 있을 수 있으며 캡처를 수행하는 데 선호되는 추적 도구가 있을 수 있습니다. 네트워크 모니터(NetMon.exe) 또는 WireShark와 호환되는 형식으로 저장되는 한 모든 도구를 사용할 수 있습니다. PCAP 형식이 가장 인기 있는 형식입니다.
SQLNA(SQL Network Analyzer) 및 SQLNAUI(SQL Network Analyzer UI)를 네트워크 추적에 대해 실행하여 읽기 쉬운 보고서를 가져옵니다.
자세한 정보
타사 정보 고지 사항
이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 안정성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.