.toc{display: none;}
요약
이 문서는 Microsoft SQL Server 2000의 연결 문제를 해결하는 데 도움이 될 수 있습니다. 이 문서에는 일반적인 연결 문제에 대한 설명과 연결 문제를 해결하기 위해 수행할 수 있는 단계가 포함되어 있습니다.
SQL Server 2000에서는 SQL Server의 인스턴스와 클라이언트 응용 프로그램 간의 몇 가지 통신 방법을 지원합니다. 클라이언트 응용 프로그램과 SQL Server의 인스턴스가 같은 컴퓨터에 있으면 로컬의 명명된 파이프나 공유 메모리 프로토콜과 같은 Microsoft Windows 프로세스간 통신(IPC) 구성 요소가 통신에 사용됩니다. 하지만 클라이언트 응용 프로그램과 SQL Server의 인스턴스가 서로 다른 컴퓨터에 있으면 TCP/IP나 명명된 파이프 등의 네트워크 IPC가 통신에 사용됩니다.
SQL Server 2000은 DLL인 Net-Library를 사용하여 특정 네트워크 프로토콜과 통신합니다. 사용할 네트워크 프로토콜을 지원하려면 Net-Library의 일치하는 쌍이 클라이언트와 서버 컴퓨터에서 활성화되어 있어야 합니다. 예를 들어, TCP/IP를 통해 SQL Server의 특정 인스턴스와 통신하도록 클라이언트 응용 프로그램을 설정하려면 클라이언트의 TCP/IP 소켓 Net-Library(Dbnetlib.dll)가 클라이언트 컴퓨터에서 서버에 연결하도록 구성되어야 합니다. 이와 마찬가지로, 서버의 TCP/IP 소켓 Net-Library(Ssnetlib.dll)는 서버 컴퓨터에서 수신 대기해야 합니다. 이 경우 TCP/IP 프로토콜 스택이 클라이언트 컴퓨터와 서버 컴퓨터에 모두 설치되어 있어야 합니다.
SQL Server 2000을 설치한 후 클라이언트 네트워크 유틸리티를 사용하여 클라이언트 Net-Library의 속성을 구성할 수 있고 서버 네트워크 유틸리티(Svrnetcn.exe)를 사용하여 서버 Net-Library의 속성을 구성할 수 있습니다. 서버 Net-Library는 SQL Server 설치에서 서버 도구를 설치하는 동안 설치됩니다. 하지만 서버 Net-Library 중에는 활성화되지 않은 것도 있을 수 있습니다. 기본적으로 SQL Server 2000은 TCP/IP, 명명된 파이프 및 공유 메모리를 사용하고 여기에서 수신 대기합니다. 따라서 클라이언트가 서버 컴퓨터에 연결하려면 SQL Server의 인스턴스가 사용하고 있는 서버 Net-Library 중 하나와 일치하는 클라이언트 Net-Library를 사용하여 연결해야 합니다.
SQL Server 통신 구성 요소와 Net-Library에 대한 자세한 내용은 SQL Server 온라인 설명서에서 다음 항목을 참조하십시오.
연결 문제 해결
SQL Server 2000에서 발생할 수 있는 대부분의 연결 문제가 TCP/IP 문제나 Windows 인증 문제 또는 TCP/IP와 Windows 인증이 결합된 문제 때문에 발생합니다.
중요 SQL Server 2000에서 연결 문제를 해결하기 전에 SQL Server를 실행하는 컴퓨터에서 MSSQLServer 서비스가 시작되었는지 확인하십시오.
DNS 설정 확인
DNS(Domain Name System)의 이름 확인 프로세스가 IP 주소를 SQL Server의 인스턴스 이름으로 확인하는 데 사용됩니다. 이름 확인 프로세스가 제대로 이루어지지 않으면 SQL Server의 인스턴스에 액세스할 수 없으며 다음과 같은 오류 메시지 중 하나 이상이 나타날 수 있습니다.
SQL Server가 없거나 액세스가 거부되었습니다.
일반 네트워크 오류가 발생했습니다.
SSPI 컨텍스트를 생성할 수 없습니다.
이름 확인 프로세스가 올바른 서버를 확인하고 있는지 확인하려면 서버의 이름과 IP 주소를 사용하여 서버에 Ping을 실행하면 됩니다. 이렇게 하려면 다음 단계를 수행하십시오.
명 령이 올바른 서버 이름으로 확인되는지 확인합니다. 지정된 명령 중 하나가 실패하거나 시간이 초과되거나 올바른 값을 반환하지 않으면 네트워크나 라우팅 문제 때문에 문제가 발생하거나 DNS 조회가 제대로 이루어지지 않습니다. 현재의 DNS 설정을 보려면 명령 프롬프트에서 다음 명령을 실행하십시오. ipconfig /all
ipconfig 명령에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
223413 (http://support.microsoft.com/kb/223413/) Windows 2000의 Ipconfig.exe 옵션
이 문제를 해결하려면 클라이언트 컴퓨터의 %systemroot%\system32\drivers\etc\hosts 파일에 서버에 대한 항목을 추가하십시오. 명명된 파이프 Net-Library를 사용하여 서버에 연결함으로써 이 문제를 해결할 수도 있습니다.
설정된 프로토콜 및 별칭 확인
클라이언트 컴퓨터에서 별칭이 제대로 설정되어 있지 않으면 연결 문제가 발생할 수 있습니다. 클라이언트 네트워크 유틸리티를 사용하여 별칭을 확인할 수 있습니다. 이렇게 하려면 다음 단계를 수행하십시오.
서 버 이름이나 IP 주소를 사용하거나 다른 프로토콜까지 사용하여 연결을 테스트할 별칭을 새로 만들 수 있습니다.
참 고 이전 버전의 Microsoft Data Access Components(MDAC)의 경우 클라이언트 네트워크 유틸리티의 사용자 인터페이스가 다릅니다. 따라서 이 문서에 나와 있는 옵션이 없으면 클라이언트 응용 프로그램을 실행하는 컴퓨터에 최신 버전의 MDAC를 설치하십시오.
SQL Server의 인스턴스가 제대로 수신 대기 중인지 확인
SQL Server의 인스턴스가 클라이언트 응용 프로그램에서 사용하고 있는 명명된 파이프, TCP/IP 또는 다른 프로토콜에서 수신 대기 중인지 확인하려면 현재 SQL Server 오류 로그 파일을 여십시오. SQL Server 오류 로그 파일에는 다음과 유사한 항목이 포함될 수 있습니다. 2003-11-06 09:49:36.17 서버 SQL Server가 TCP, 공유 메모리, 명명된 파이프에서 수신 대기 중입니다. 2003-11-06 09:49:36.17 서버 SQL Server가 192.168.1.5:1433, 127.0.0.1:1433에서 수신 대기 중입니다.
SQL Server 오류 로그 파일의 항목을 분석하면 SQL Server의 인스턴스가 올바른 IP 주소와 올바른 포트에서 수신 대기 중임을 확인할 수 있습니다. 기본적으로 SQL Server의 기본 인스턴스는 포트 1433에서 수신 대기합니다. 서버 네트워크 유틸리티를 사용하여 SQL Server의 프로토콜 설정을 확인하고 SQL Server에 연결할 수 있는 프로토콜과 사용할 수 있는 포트를 비롯한 속성을 SQL Server에서 변경할 수도 있습니다. 서버 네트워크 유틸리티를 사용하는 방법에 대한 자세한 내용은 SQL Server 온라인 설명서의 "SQL Server 네트워크 유틸리티" 항목을 참조하십시오.
SQL Server 2000이 포트 1433이나 다른 지정된 포트에 바인딩되어 있지 않은 경우도 있습니다. 이 문제는 다른 응용 프로그램이 해당 포트를 사용하고 있거나 잘못된 IP 주소를 사용하여 연결하려고 하면 발생할 수 있습니다. 따라서 SQL Server에 대한 TCP/IP 연결이 성공하지 못할 수 있으며 SQL Server 오류 로그 파일에 다음과 같은 오류 메시지가 나타날 수 있습니다.
2001-11-14 15:49:14.12 서버 SuperSocket 정보: TCP 포트 1433을(를) 바인딩하지 못했습니다.
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
307197 (http://support.microsoft.com/kb/307197/) PRB: SQL 가상 클러스터 서버가 수신 대기 중인 포트에 바인딩하지 못한다
TCP/IP 연결을 사용하여 SQL Server의 인스턴스에 연결할 수 없으면 명명된 파이프 프로토콜이나 공유 메모리 프로토콜을 사용해보십시오. 명령 프롬프트에서 다음 명령을 실행하면 사용 중인 포트에 대한 정보를 얻을 수 있습니다. NETSTAT -an
Portqry 명령줄 유틸리티를 사용하여 사용 중인 포트에 대한 자세한 정보를 얻을 수도 있습니다.
Portqry 명령줄 유틸리티에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
310099 (http://support.microsoft.com/kb/310099/) Portqry.exe 명령줄 유틸리티에 대한 설명
TCP/IP 소켓과 관련된 버그에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
306865 (http://support.microsoft.com/kb/306865/) BUG: TCP/IP가 유일한 프로토콜인 경우 SQL Server가 TCP/IP 소켓에서 수신 대기하지 않을 수 있다
참 고 SQL Server의 명명된 인스턴스의 경우, SQL Server는 포트를 동적으로 결정하고 결정된 포트에서 수신 대기합니다. 따라서 SQL Server의 명명된 인스턴스를 시작할 때 SQL Server는 이전에 사용 중이었던 포트에서 수신 대기하려고 합니다. SQL Server가 이 포트에 바인딩할 수 없으면 명명된 인스턴스가 다른 포트에 동적으로 바인딩될 수 있습니다. 이 경우 클라이언트 응용 프로그램도 포트를 동적으로 결정하도록 설정되었는지 확인하십시오. 또는, 클라이언트 네트워크 유틸리티를 사용하여 바인딩하고 수신 대기할 명명된 인스턴스의 동적 포트를 지정할 수도 있습니다.
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
286303 (http://support.microsoft.com/kb/286303/) INF: 동적 포트 검색 동안 SQL Server 2000 네트워크 라이브러리의 동작
823938 (http://support.microsoft.com/kb/823938/) SQL Server 2000에서 정적 및 동적 포트 할당을 사용하는 방법
MDAC 문제 해결
MDAC 문제 때문에 연결 문제가 발생할 수도 있습니다. 예를 들어, 소프트웨어 설치가 일부 MDAC 파일을 덮어쓰거나 MDAC 파일에 액세스하는 데 필요한 권한을 변경할 수 있습니다. MDAC 구성 요소 검사기를 실행하여 컴퓨터에서 MDAC 설치를 확인할 수 있습니다.
MDAC의 버전을 확인하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
301202 (http://support.microsoft.com/kb/301202/) HOWTO: MDAC 버전 확인
참고 SQL Server의 명명된 인스턴스에 연결하는 경우 컴퓨터에서 MDAC 2.6 이상을 실행하고 있는지 확인하십시오. 이전 버전의 MDAC는 SQL Server의 명명된 인스턴스를 인식하지 못하므로 명명된 인스턴스에 대한 연결에 실패할 수 있습니다.
Odbcping.exe 유틸리티를 사용하여 SQL Server ODBC 드라이버를 통한 연결을 확인할 수 있습니다.
Odbcping.exe에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
138541 (http://support.microsoft.com/kb/138541/) INF: ODBCPING.EXE로 SQL Server와의 ODBC 연결 확인
ODBC DSN을 구성하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
289573 (http://support.microsoft.com/kb/289573/) PRB: SQL Server Net-Library로 DSN 구성
.udl 파일을 사용하여 SQL Server의 인스턴스에 대한 연결을 테스트할 수도 있습니다.
.udl 파일을 만드는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
244659 (http://support.microsoft.com/kb/244659/) 예제: Windows 2000에서 데이터 링크 파일을 만드는 방법
방화벽 문제 해결
클라이언트 컴퓨터와 SQL Server를 실행하는 컴퓨터 사이에 방화벽이 있으면 방화벽을 통해 통신하는 데 필요한 포트가 열려 있는지 확인하십시오.
방화벽을 통해 통신하기 위해 열려 있어야 하는 포트에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
287932 (http://support.microsoft.com/kb/287932/) INF: 방화벽을 통해 SQL Server와 통신하는 데 필요한 TCP 포트
269882 (http://support.microsoft.com/kb/269882/) HOWTO: ADO를 사용하여 방화벽 뒤에 있는 SQL Server에 연결하는 방법
TCP/IP 프로토콜을 사용하여 SQL Server의 인스턴스에 연결하는 경우 텔넷 프로그램을 사용하여 SQL Server가 수신 대기하는 포트에 연결할 수 있는지 확인해야 합니다. 텔넷 프로그램을 사용하려면 명령 프롬프트에서 다음 명령을 실행하십시오. Telnet <IP Address> <Port Number>
텔넷 프로그램이 성공하지 못하고 오류 메시지가 표시되면 오류를 해결하고 다시 연결해보십시오.
참고 Slammer 바이러스로 인한 문제 때문에 사용자 데이터그램 프로토콜(UDP) 포트 1434가 방화벽에서 차단될 수 있습니다.
인증 및 보안 문제 해결
인증 오류 때문에 SQL Server에 연결하지 못할 수 있습니다. 인증에 실패하면 다음과 같은 오류 메시지 중 하나가 표시될 수 있습니다.
'<username>' 사용자가 로그인하지 못했습니다.
'NTAUTHORITY\ANONYMOUS LOGON' 사용자가 로그인하지 못했습니다.
'null' 사용자가 로그인하지 못했습니다.
인증 오류 때문에 오류 메시지가 표시되고 오류 메시지에 특정한 SQL Server 로그인 이름이 나타나지 않으면 Windows 인증 문제를 해결하십시오. Windows 인증 문제 때문에 다음과 같은 오류 메시지가 표시될 수 있습니다.
SSPI 컨텍스트를 생성할 수 없습니다.
다음 문제는 인증과 보안 문제를 발생시킬 수 있습니다.
가능한 원인에 대한 자세한 내용은 컴퓨터에서 이벤트 로그를 참조하십시오. Windows 인증과 관련된 연결 문제를 해결하려면 SQL Server 인증을 사용하여 SQL Server의 인스턴스에 연결하면 됩니다. "SSPI 컨텍스트를 생성할 수 없습니다." 오류 문제를 해결하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
811889 (http://support.microsoft.com/kb/811889/) "SSPI 컨텍스트를 생성할 수 없습니다." 오류 메시지 문제 해결
SQL Server 인증을 사용할 때 연결에 실패하면 다음과 같은 오류 메시지가 표시됩니다.
'<username>' 사용자가 로그인하지 못했습니다. 트러스트된 연결과 관련되지 않았습니다.
이 문제를 해결하려면 아래 단계를 수행하십시오.
경고 레지스트리 편집기를 잘못 사용하면 심각한 문제가 발생할 수 있으며 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 레지스트리 편집기를 잘못 사용함으로써 발생하는 문제에 대해 해결을 보증하지 않습니다. 레지스트리 편집기의 사용에 따른 모든 책임은 사용자에게 있습니다.
인증서를 사용하는 경우 SQL Server의 인스턴스에 연결하려고 하면 SSL(Secure Sockets Layer) 보안 오류 메시지가 나타날 수 있습니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
316898 (http://support.microsoft.com/kb/316898/) HOWTO: Microsoft Management Console을 사용하여 SQL Server 2000에 대한 SSL 암호화 설정
322144 (http://support.microsoft.com/kb/322144/) FIX: SECDoClientHandShake가 SQL Server에 연결할 수 없다
TCP/IP 소켓의 스트레스 문제 해결
SQL Server ODBC 드라이버, SQL Server용 Microsoft OLE DB 공급자 또는 System.Data.SqlClient 관리 공급자를 사용하는 경우 적절한 응용 프로그램 인터페이스(API)를 사용하여 연결 풀링을 해제할 수 있습니다. 연결 풀링을 해제한 경우 응용 프로그램이 연결을 빈번하게 열고 닫으면 기본 SQL Server 네트워크 라이브러리에 대한 스트레스가 증가할 수 있습니다. 경우에 따라 웹 서버와 JDBC 드라이버도 SQL Server의 인스턴스에 연결하려고 할 수 있으므로 SQL Server에 대한 연결 요청이 SQL Server가 처리할 수 있는 것보다 많아질 수 있습니다. 이렇게 되면 TCP/IP 소켓에 스트레스가 발생할 수 있으며 SQL Server 오류 로그 파일에 다음 오류 메시지가 표시될 수 있습니다.
2003-08-07 20:46:21.11 server 오류: 17832, 심각도: 20, 상태: 6
2003-08-07 20:46:21.11 서버 연결을 열었지만 잘못된 로그인 패킷을 보냈습니다. 연결이 닫혔습니다.
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
154628 (http://support.microsoft.com/kb/154628/) INF: TCP/IP 연결 요청이 여러 개인 경우 SQL이 17832를 기록한다
328476 (http://support.microsoft.com/kb/328476/) 풀링이 해제된 경우의 SQL Server 드라이버에 대한 TCP/IP 설정
참고 SQL Server 2000 SP3이나 SQL Server 2000 SP3a를 실행하고 있으면 로그인 패킷 수에 대한 제한이 추가되었기 때문에 TCP/IP 소켓에 스트레스가 발생하지 않을 수 있습니다. 17832 오류는 타사 드라이버를 사용하여 SQL Server의 인스턴스에 연결하면 발생합니다. 이 문제를 해결하려면 타사 공급업체에 문의하여 테스트를 통해 SQL Server 2000 SP3과 SQL Server 2000 SP3a에서 작동하는 것으로 확인된 드라이버를 구하십시오.
SQL Server의 인스턴스가 단일 사용자 모드로 시작되었는지 확인
연결하려고 하는 SQL Server의 인스턴스가 단일 사용자 모드로 시작된 경우 SQL Server와 설정할 수 있는 연결은 하나뿐입니다. SQL Server에 자동으로 연결하는 소프트웨어가 컴퓨터에서 실행 중이면 이 소프트웨어는 하나뿐인 연결을 쉽게 사용할 수 있습니다. 예를 들어, 다음 소프트웨어는 SQL Server의 인스턴스에 자동으로 연결할 수 있습니다.
SQL Server의 인스턴스에 연결하려고 하는 클라이언트 응용 프로그램은 다음과 같은 오류 메시지를 받습니다.
SQL Server가 없거나 액세스가 거부되었습니다.
일반적으로 이 오류는 설치 프로세스가 단일 사용자 모드로 SQL Server의 인스턴스를 시작할 때 SQL 클러스터 설치와 서비스 팩 설치 중 발생합니다. 지정된 응용 프로그램은 사용할 수 있는 유일한 연결을 사용하여 SQL Server의 인스턴스에 자동으로 연결할 수 있지만 설치는 실패합니다.
SQL Server의 인스턴스가 단일 사용자 모드로 시작되었는지 확인하려면 SQL Server 오류 로그 파일에 다음과 유사한 항목이 있는지 확인하십시오.
2003-07-31 11:26:43.79 spid3 경고 ******************
2003-07-31 11:26:43.80 spid3 SQL Server가 단일 사용자 모드에서 시작되었습니다. 시스템 카탈로그를 업데이트할 수 있습니다.
SQL Server에 대한 명명된 파이프 연결 확인
명명된 파이프를 사용하여 SQL Server의 인스턴스에 연결할 수 없으면 SQL Server의 인스턴스가 명명된 파이프 연결을 받아들이도록 구성되어 있는지 확인하십시오. 명명된 파이프를 테스트하는 절차에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
68941 (http://support.microsoft.com/kb/68941/) INF: 명명된 파이프를 테스트하는 절차
복구 프로세스 중 시간 초과되는 연결 문제 해결
SQL Server의 인스턴스를 시작할 때마다 SQL Server는 각 데이터베이스를 복구합니다. 이 복구 프로세스 중에 SQL Server는 커밋되지 않은 트랜잭션을 롤백합니다. SQL Server는 SQL Server의 인스턴스가 중지되었을 때 하드 디스크에 기록되지 않은 변경 내용과 커밋되는 트랜잭션을 롤포워드하기도 합니다. 복구 프로세스가 완료되면 SQL Server는 SQL Server 오류 로그 파일에 다음 메시지를 기록합니다.
복구 프로세스 중에 SQL Server가 연결을 받아들이지 않을 수 있습니다. 이때 SQL Server의 인스턴스에 연결하려고 하는 클라이언트는 다음과 유사한 오류 메시지를 받을 수 있습니다.
시간이 초과되었습니다.
SQL Server 에이전트 서비스는 SQL Server가 데이터베이스를 복구할 때까지 대기하기 때문에 시작되지 않을 수 있습니다. 따라서 SQL Server 오류 로그 파일에 다음 메시지가 표시되면 연결이 더 이상 시간 초과 오류로 인해 실패하지 않습니다.
복구 프로세스에 오랜 시간이 걸리면 복구 프로세스 문제를 추가로 해결해야 할 수도 있습니다.
SQL Server의 인스턴스에 연결하는 여러 가지 방법 테스트
SQL Server의 인스턴스에 연결할 때 연결 문제가 발생하면 다음 방법 중 하나 이상을 사용하여 연결 문제를 해결할 수 있습니다.
네트워크 모니터 추적 캡처
" SQL Server의 인스턴스에 연결하는 여러 가지 방법 테스트" 절에서 설명하는 단계로 연결 문제가 해결되지 않으면 네트워크 모니터 유틸리티를 사용하여 네트워크 추적을 캡처하십시오. 네트워크 추적에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
148942 (http://support.microsoft.com/kb/148942/) 네트워크 모니터를 사용하여 네트워크 트래픽을 캡처하는 방법
294818 (http://support.microsoft.com/kb/294818/) 네트워크 모니터에 대한 질문과 대답
169292 (http://support.microsoft.com/kb/169292/) TCP/IP 추적 읽기에 대한 기본 사항
102908 (http://support.microsoft.com/kb/102908/) Windows NT의 TCP/IP 연결 문제 해결 방법
더 자세한 정보를 얻으려면 SQL 프로필러 추적을 사용해야 할 수 있습니다. SQL Server를 실행하는 클러스터되지 않은 컴퓨터의 경우 네트워크 진단 도구를 사용하여 네트워크를 추적할 수도 있습니다. 네트워크 진단 도구를 사용하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
321708 (http://support.microsoft.com/kb/321708/) HOWTO: Windows 2000에서 네트워크 진단 도구(Netdiag.exe) 사용
참조
SQL Server와 관련된 다양한 연결 문제에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
812817 (http://support.microsoft.com/kb/812817/) 웹캐스트: Microsoft SQL Server 2000: 연결 문제 해결 방법
319930 (http://support.microsoft.com/kb/319930/) HOWTO: Microsoft Desktop Engine에 연결
257434 (http://support.microsoft.com/kb/257434/) INF: 동일한 SQL Server 이름을 사용하는 경우 기존 DSN의 네트워크 라이브러리가 새 DSN의 네트워크 라이브러리로 대체된다
306985 (http://support.microsoft.com/kb/306985/) 명명된 파이프로 클러스터 가상 서버에 연결할 때 RPC 오류가 발생한다
313062 (http://support.microsoft.com/kb/313062/) HOWTO: Windows 2000에서 Active Server Pages를 사용하여 데이터베이스에 연결
313295 (http://support.microsoft.com/kb/313295/) HOWTO: 연결 문자열에서 서버 이름 매개 변수를 사용하여 클라이언트 네트워크 라이브러리 지정
320728 (http://support.microsoft.com/kb/320728/) HOWTO: "최대 연결 제한 수에 도달했습니다." 오류 메시지 해결
328306 (http://support.microsoft.com/kb/328306/) INF: "SQL Server가 없거나 액세스가 거부되었습니다." 오류 메시지의 잠재적 원인
247931 (http://support.microsoft.com/kb/247931/) ASP에서 SQL Server로의 연결 시 인증 방법
169377 (http://support.microsoft.com/kb/169377/) INF: Active Server Pages에서 SQL Server에 액세스하는 방법
328383 (http://support.microsoft.com/kb/328383/) INF: SQL Server 클라이언트가 연결하려 할 때 프로토콜을 변경할 수 있다
238949 (http://support.microsoft.com/kb/238949/) HOWTO: ADO 연결 문자열에서 SQL Server 네트워크 라이브러리 설정하기
270126 (http://support.microsoft.com/kb/270126/) PRB: Active/Active Cluster 7.0을 업그레이드한 후 두 SQL Server 2000 가상 서버에 대한 클라이언트 연결을 관리하는 방법
316779 (http://support.microsoft.com/kb/316779/) PRB: 프로토콜 암호화 강제 사용이 설정된 클라이언트가 IP 주소로 연결하지 못할 수 있다
216643 (http://support.microsoft.com/kb/216643/) INF: SQL Server 7.0으로 연결 추적(Trace)할 때 ODBC/OLEDB 연결 옵션이 보이지 않음
265808 (http://support.microsoft.com/kb/265808/) SQL Server 2000 명명된 인스턴스를 연결하는 방법
191572 (http://support.microsoft.com/kb/191572/) INFO: ASP에서 호출된 ADO 개체별 연결 풀 관리
313173 (http://support.microsoft.com/kb/313173/) JDBC용 Microsoft SQL Server 2000 드라이버에서 사용할 예제 연결 풀 관리자
237844 (http://support.microsoft.com/kb/237844/) HOWTO: Visual Basic ADO 응용 프로그램에서 ODBC 연결 풀링 설정
259569 (http://support.microsoft.com/kb/259569/) PRB: 타사 제품을 설치하면 Windows 2000 MDAC 레지스트리 설정이 손상된다
Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹(http://support.microsoft.com/newsgroups/default.aspx)에 참여하시기 바랍니다.
요약
이 문서는 Microsoft SQL Server 2000의 연결 문제를 해결하는 데 도움이 될 수 있습니다. 이 문서에는 일반적인 연결 문제에 대한 설명과 연결 문제를 해결하기 위해 수행할 수 있는 단계가 포함되어 있습니다.
SQL Server 2000에서는 SQL Server의 인스턴스와 클라이언트 응용 프로그램 간의 몇 가지 통신 방법을 지원합니다. 클라이언트 응용 프로그램과 SQL Server의 인스턴스가 같은 컴퓨터에 있으면 로컬의 명명된 파이프나 공유 메모리 프로토콜과 같은 Microsoft Windows 프로세스간 통신(IPC) 구성 요소가 통신에 사용됩니다. 하지만 클라이언트 응용 프로그램과 SQL Server의 인스턴스가 서로 다른 컴퓨터에 있으면 TCP/IP나 명명된 파이프 등의 네트워크 IPC가 통신에 사용됩니다.
SQL Server 2000은 DLL인 Net-Library를 사용하여 특정 네트워크 프로토콜과 통신합니다. 사용할 네트워크 프로토콜을 지원하려면 Net-Library의 일치하는 쌍이 클라이언트와 서버 컴퓨터에서 활성화되어 있어야 합니다. 예를 들어, TCP/IP를 통해 SQL Server의 특정 인스턴스와 통신하도록 클라이언트 응용 프로그램을 설정하려면 클라이언트의 TCP/IP 소켓 Net-Library(Dbnetlib.dll)가 클라이언트 컴퓨터에서 서버에 연결하도록 구성되어야 합니다. 이와 마찬가지로, 서버의 TCP/IP 소켓 Net-Library(Ssnetlib.dll)는 서버 컴퓨터에서 수신 대기해야 합니다. 이 경우 TCP/IP 프로토콜 스택이 클라이언트 컴퓨터와 서버 컴퓨터에 모두 설치되어 있어야 합니다.
SQL Server 2000을 설치한 후 클라이언트 네트워크 유틸리티를 사용하여 클라이언트 Net-Library의 속성을 구성할 수 있고 서버 네트워크 유틸리티(Svrnetcn.exe)를 사용하여 서버 Net-Library의 속성을 구성할 수 있습니다. 서버 Net-Library는 SQL Server 설치에서 서버 도구를 설치하는 동안 설치됩니다. 하지만 서버 Net-Library 중에는 활성화되지 않은 것도 있을 수 있습니다. 기본적으로 SQL Server 2000은 TCP/IP, 명명된 파이프 및 공유 메모리를 사용하고 여기에서 수신 대기합니다. 따라서 클라이언트가 서버 컴퓨터에 연결하려면 SQL Server의 인스턴스가 사용하고 있는 서버 Net-Library 중 하나와 일치하는 클라이언트 Net-Library를 사용하여 연결해야 합니다.
SQL Server 통신 구성 요소와 Net-Library에 대한 자세한 내용은 SQL Server 온라인 설명서에서 다음 항목을 참조하십시오.
중요 SQL Server 2000에서 연결 문제를 해결하기 전에 SQL Server를 실행하는 컴퓨터에서 MSSQLServer 서비스가 시작되었는지 확인하십시오.
명 령이 올바른 서버 이름으로 확인되는지 확인합니다. 지정된 명령 중 하나가 실패하거나 시간이 초과되거나 올바른 값을 반환하지 않으면 네트워크나 라우팅 문제 때문에 문제가 발생하거나 DNS 조회가 제대로 이루어지지 않습니다. 현재의 DNS 설정을 보려면 명령 프롬프트에서 다음 명령을 실행하십시오.
이 문제를 해결하려면 클라이언트 컴퓨터의 %systemroot%\system32\drivers\etc\hosts 파일에 서버에 대한 항목을 추가하십시오. 명명된 파이프 Net-Library를 사용하여 서버에 연결함으로써 이 문제를 해결할 수도 있습니다.
서 버 이름이나 IP 주소를 사용하거나 다른 프로토콜까지 사용하여 연결을 테스트할 별칭을 새로 만들 수 있습니다.
참 고 이전 버전의 Microsoft Data Access Components(MDAC)의 경우 클라이언트 네트워크 유틸리티의 사용자 인터페이스가 다릅니다. 따라서 이 문서에 나와 있는 옵션이 없으면 클라이언트 응용 프로그램을 실행하는 컴퓨터에 최신 버전의 MDAC를 설치하십시오.
SQL Server 오류 로그 파일의 항목을 분석하면 SQL Server의 인스턴스가 올바른 IP 주소와 올바른 포트에서 수신 대기 중임을 확인할 수 있습니다. 기본적으로 SQL Server의 기본 인스턴스는 포트 1433에서 수신 대기합니다. 서버 네트워크 유틸리티를 사용하여 SQL Server의 프로토콜 설정을 확인하고 SQL Server에 연결할 수 있는 프로토콜과 사용할 수 있는 포트를 비롯한 속성을 SQL Server에서 변경할 수도 있습니다. 서버 네트워크 유틸리티를 사용하는 방법에 대한 자세한 내용은 SQL Server 온라인 설명서의 "SQL Server 네트워크 유틸리티" 항목을 참조하십시오.
SQL Server 2000이 포트 1433이나 다른 지정된 포트에 바인딩되어 있지 않은 경우도 있습니다. 이 문제는 다른 응용 프로그램이 해당 포트를 사용하고 있거나 잘못된 IP 주소를 사용하여 연결하려고 하면 발생할 수 있습니다. 따라서 SQL Server에 대한 TCP/IP 연결이 성공하지 못할 수 있으며 SQL Server 오류 로그 파일에 다음과 같은 오류 메시지가 나타날 수 있습니다.
TCP/IP 연결을 사용하여 SQL Server의 인스턴스에 연결할 수 없으면 명명된 파이프 프로토콜이나 공유 메모리 프로토콜을 사용해보십시오. 명령 프롬프트에서 다음 명령을 실행하면 사용 중인 포트에 대한 정보를 얻을 수 있습니다.
Portqry 명령줄 유틸리티에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
참 고 SQL Server의 명명된 인스턴스의 경우, SQL Server는 포트를 동적으로 결정하고 결정된 포트에서 수신 대기합니다. 따라서 SQL Server의 명명된 인스턴스를 시작할 때 SQL Server는 이전에 사용 중이었던 포트에서 수신 대기하려고 합니다. SQL Server가 이 포트에 바인딩할 수 없으면 명명된 인스턴스가 다른 포트에 동적으로 바인딩될 수 있습니다. 이 경우 클라이언트 응용 프로그램도 포트를 동적으로 결정하도록 설정되었는지 확인하십시오. 또는, 클라이언트 네트워크 유틸리티를 사용하여 바인딩하고 수신 대기할 명명된 인스턴스의 동적 포트를 지정할 수도 있습니다.
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
MDAC의 버전을 확인하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
참고 SQL Server의 명명된 인스턴스에 연결하는 경우 컴퓨터에서 MDAC 2.6 이상을 실행하고 있는지 확인하십시오. 이전 버전의 MDAC는 SQL Server의 명명된 인스턴스를 인식하지 못하므로 명명된 인스턴스에 대한 연결에 실패할 수 있습니다.
Odbcping.exe 유틸리티를 사용하여 SQL Server ODBC 드라이버를 통한 연결을 확인할 수 있습니다.
Odbcping.exe에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
.udl 파일을 사용하여 SQL Server의 인스턴스에 대한 연결을 테스트할 수도 있습니다.
.udl 파일을 만드는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
방화벽을 통해 통신하기 위해 열려 있어야 하는 포트에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
TCP/IP 프로토콜을 사용하여 SQL Server의 인스턴스에 연결하는 경우 텔넷 프로그램을 사용하여 SQL Server가 수신 대기하는 포트에 연결할 수 있는지 확인해야 합니다. 텔넷 프로그램을 사용하려면 명령 프롬프트에서 다음 명령을 실행하십시오.
참고 Slammer 바이러스로 인한 문제 때문에 사용자 데이터그램 프로토콜(UDP) 포트 1434가 방화벽에서 차단될 수 있습니다.
가능한 원인에 대한 자세한 내용은 컴퓨터에서 이벤트 로그를 참조하십시오. Windows 인증과 관련된 연결 문제를 해결하려면 SQL Server 인증을 사용하여 SQL Server의 인스턴스에 연결하면 됩니다. "SSPI 컨텍스트를 생성할 수 없습니다." 오류 문제를 해결하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
이 문제를 해결하려면 아래 단계를 수행하십시오.
경고 레지스트리 편집기를 잘못 사용하면 심각한 문제가 발생할 수 있으며 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 레지스트리 편집기를 잘못 사용함으로써 발생하는 문제에 대해 해결을 보증하지 않습니다. 레지스트리 편집기의 사용에 따른 모든 책임은 사용자에게 있습니다.
인증서를 사용하는 경우 SQL Server의 인스턴스에 연결하려고 하면 SSL(Secure Sockets Layer) 보안 오류 메시지가 나타날 수 있습니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
참고 SQL Server 2000 SP3이나 SQL Server 2000 SP3a를 실행하고 있으면 로그인 패킷 수에 대한 제한이 추가되었기 때문에 TCP/IP 소켓에 스트레스가 발생하지 않을 수 있습니다. 17832 오류는 타사 드라이버를 사용하여 SQL Server의 인스턴스에 연결하면 발생합니다. 이 문제를 해결하려면 타사 공급업체에 문의하여 테스트를 통해 SQL Server 2000 SP3과 SQL Server 2000 SP3a에서 작동하는 것으로 확인된 드라이버를 구하십시오.
SQL Server의 인스턴스에 연결하려고 하는 클라이언트 응용 프로그램은 다음과 같은 오류 메시지를 받습니다.
SQL Server의 인스턴스가 단일 사용자 모드로 시작되었는지 확인하려면 SQL Server 오류 로그 파일에 다음과 유사한 항목이 있는지 확인하십시오.
더 자세한 정보를 얻으려면 SQL 프로필러 추적을 사용해야 할 수 있습니다. SQL Server를 실행하는 클러스터되지 않은 컴퓨터의 경우 네트워크 진단 도구를 사용하여 네트워크를 추적할 수도 있습니다. 네트워크 진단 도구를 사용하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
SQL Server 2000은 DLL인 Net-Library를 사용하여 특정 네트워크 프로토콜과 통신합니다. 사용할 네트워크 프로토콜을 지원하려면 Net-Library의 일치하는 쌍이 클라이언트와 서버 컴퓨터에서 활성화되어 있어야 합니다. 예를 들어, TCP/IP를 통해 SQL Server의 특정 인스턴스와 통신하도록 클라이언트 응용 프로그램을 설정하려면 클라이언트의 TCP/IP 소켓 Net-Library(Dbnetlib.dll)가 클라이언트 컴퓨터에서 서버에 연결하도록 구성되어야 합니다. 이와 마찬가지로, 서버의 TCP/IP 소켓 Net-Library(Ssnetlib.dll)는 서버 컴퓨터에서 수신 대기해야 합니다. 이 경우 TCP/IP 프로토콜 스택이 클라이언트 컴퓨터와 서버 컴퓨터에 모두 설치되어 있어야 합니다.
SQL Server 2000을 설치한 후 클라이언트 네트워크 유틸리티를 사용하여 클라이언트 Net-Library의 속성을 구성할 수 있고 서버 네트워크 유틸리티(Svrnetcn.exe)를 사용하여 서버 Net-Library의 속성을 구성할 수 있습니다. 서버 Net-Library는 SQL Server 설치에서 서버 도구를 설치하는 동안 설치됩니다. 하지만 서버 Net-Library 중에는 활성화되지 않은 것도 있을 수 있습니다. 기본적으로 SQL Server 2000은 TCP/IP, 명명된 파이프 및 공유 메모리를 사용하고 여기에서 수신 대기합니다. 따라서 클라이언트가 서버 컴퓨터에 연결하려면 SQL Server의 인스턴스가 사용하고 있는 서버 Net-Library 중 하나와 일치하는 클라이언트 Net-Library를 사용하여 연결해야 합니다.
SQL Server 통신 구성 요소와 Net-Library에 대한 자세한 내용은 SQL Server 온라인 설명서에서 다음 항목을 참조하십시오.
연결 문제 해결
SQL Server 2000에서 발생할 수 있는 대부분의 연결 문제가 TCP/IP 문제나 Windows 인증 문제 또는 TCP/IP와 Windows 인증이 결합된 문제 때문에 발생합니다.중요 SQL Server 2000에서 연결 문제를 해결하기 전에 SQL Server를 실행하는 컴퓨터에서 MSSQLServer 서비스가 시작되었는지 확인하십시오.
DNS 설정 확인
DNS(Domain Name System)의 이름 확인 프로세스가 IP 주소를 SQL Server의 인스턴스 이름으로 확인하는 데 사용됩니다. 이름 확인 프로세스가 제대로 이루어지지 않으면 SQL Server의 인스턴스에 액세스할 수 없으며 다음과 같은 오류 메시지 중 하나 이상이 나타날 수 있습니다.
SQL Server가 없거나 액세스가 거부되었습니다.
일반 네트워크 오류가 발생했습니다.
SSPI 컨텍스트를 생성할 수 없습니다.
이름 확인 프로세스가 올바른 서버를 확인하고 있는지 확인하려면 서버의 이름과 IP 주소를 사용하여 서버에 Ping을 실행하면 됩니다. 이렇게 하려면 다음 단계를 수행하십시오.ipconfig /allipconfig 명령에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
223413 (http://support.microsoft.com/kb/223413/) Windows 2000의 Ipconfig.exe 옵션
이 문제를 해결하려면 클라이언트 컴퓨터의 %systemroot%\system32\drivers\etc\hosts 파일에 서버에 대한 항목을 추가하십시오. 명명된 파이프 Net-Library를 사용하여 서버에 연결함으로써 이 문제를 해결할 수도 있습니다.
설정된 프로토콜 및 별칭 확인
클라이언트 컴퓨터에서 별칭이 제대로 설정되어 있지 않으면 연결 문제가 발생할 수 있습니다. 클라이언트 네트워크 유틸리티를 사용하여 별칭을 확인할 수 있습니다. 이렇게 하려면 다음 단계를 수행하십시오.참 고 이전 버전의 Microsoft Data Access Components(MDAC)의 경우 클라이언트 네트워크 유틸리티의 사용자 인터페이스가 다릅니다. 따라서 이 문서에 나와 있는 옵션이 없으면 클라이언트 응용 프로그램을 실행하는 컴퓨터에 최신 버전의 MDAC를 설치하십시오.
SQL Server의 인스턴스가 제대로 수신 대기 중인지 확인
SQL Server의 인스턴스가 클라이언트 응용 프로그램에서 사용하고 있는 명명된 파이프, TCP/IP 또는 다른 프로토콜에서 수신 대기 중인지 확인하려면 현재 SQL Server 오류 로그 파일을 여십시오. SQL Server 오류 로그 파일에는 다음과 유사한 항목이 포함될 수 있습니다.2003-11-06 09:49:36.17 서버 SQL Server가 TCP, 공유 메모리, 명명된 파이프에서 수신 대기 중입니다. 2003-11-06 09:49:36.17 서버 SQL Server가 192.168.1.5:1433, 127.0.0.1:1433에서 수신 대기 중입니다.
SQL Server 오류 로그 파일의 항목을 분석하면 SQL Server의 인스턴스가 올바른 IP 주소와 올바른 포트에서 수신 대기 중임을 확인할 수 있습니다. 기본적으로 SQL Server의 기본 인스턴스는 포트 1433에서 수신 대기합니다. 서버 네트워크 유틸리티를 사용하여 SQL Server의 프로토콜 설정을 확인하고 SQL Server에 연결할 수 있는 프로토콜과 사용할 수 있는 포트를 비롯한 속성을 SQL Server에서 변경할 수도 있습니다. 서버 네트워크 유틸리티를 사용하는 방법에 대한 자세한 내용은 SQL Server 온라인 설명서의 "SQL Server 네트워크 유틸리티" 항목을 참조하십시오.
SQL Server 2000이 포트 1433이나 다른 지정된 포트에 바인딩되어 있지 않은 경우도 있습니다. 이 문제는 다른 응용 프로그램이 해당 포트를 사용하고 있거나 잘못된 IP 주소를 사용하여 연결하려고 하면 발생할 수 있습니다. 따라서 SQL Server에 대한 TCP/IP 연결이 성공하지 못할 수 있으며 SQL Server 오류 로그 파일에 다음과 같은 오류 메시지가 나타날 수 있습니다.
2001-11-14 15:49:14.12 서버 SuperSocket 정보: TCP 포트 1433을(를) 바인딩하지 못했습니다.
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
307197 (http://support.microsoft.com/kb/307197/) PRB: SQL 가상 클러스터 서버가 수신 대기 중인 포트에 바인딩하지 못한다
TCP/IP 연결을 사용하여 SQL Server의 인스턴스에 연결할 수 없으면 명명된 파이프 프로토콜이나 공유 메모리 프로토콜을 사용해보십시오. 명령 프롬프트에서 다음 명령을 실행하면 사용 중인 포트에 대한 정보를 얻을 수 있습니다.
NETSTAT -anPortqry 명령줄 유틸리티를 사용하여 사용 중인 포트에 대한 자세한 정보를 얻을 수도 있습니다.
Portqry 명령줄 유틸리티에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
310099 (http://support.microsoft.com/kb/310099/) Portqry.exe 명령줄 유틸리티에 대한 설명
TCP/IP 소켓과 관련된 버그에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
306865 (http://support.microsoft.com/kb/306865/) BUG: TCP/IP가 유일한 프로토콜인 경우 SQL Server가 TCP/IP 소켓에서 수신 대기하지 않을 수 있다
참 고 SQL Server의 명명된 인스턴스의 경우, SQL Server는 포트를 동적으로 결정하고 결정된 포트에서 수신 대기합니다. 따라서 SQL Server의 명명된 인스턴스를 시작할 때 SQL Server는 이전에 사용 중이었던 포트에서 수신 대기하려고 합니다. SQL Server가 이 포트에 바인딩할 수 없으면 명명된 인스턴스가 다른 포트에 동적으로 바인딩될 수 있습니다. 이 경우 클라이언트 응용 프로그램도 포트를 동적으로 결정하도록 설정되었는지 확인하십시오. 또는, 클라이언트 네트워크 유틸리티를 사용하여 바인딩하고 수신 대기할 명명된 인스턴스의 동적 포트를 지정할 수도 있습니다.
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
286303 (http://support.microsoft.com/kb/286303/) INF: 동적 포트 검색 동안 SQL Server 2000 네트워크 라이브러리의 동작
823938 (http://support.microsoft.com/kb/823938/) SQL Server 2000에서 정적 및 동적 포트 할당을 사용하는 방법
MDAC 문제 해결
MDAC 문제 때문에 연결 문제가 발생할 수도 있습니다. 예를 들어, 소프트웨어 설치가 일부 MDAC 파일을 덮어쓰거나 MDAC 파일에 액세스하는 데 필요한 권한을 변경할 수 있습니다. MDAC 구성 요소 검사기를 실행하여 컴퓨터에서 MDAC 설치를 확인할 수 있습니다.MDAC의 버전을 확인하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
301202 (http://support.microsoft.com/kb/301202/) HOWTO: MDAC 버전 확인
참고 SQL Server의 명명된 인스턴스에 연결하는 경우 컴퓨터에서 MDAC 2.6 이상을 실행하고 있는지 확인하십시오. 이전 버전의 MDAC는 SQL Server의 명명된 인스턴스를 인식하지 못하므로 명명된 인스턴스에 대한 연결에 실패할 수 있습니다.
Odbcping.exe 유틸리티를 사용하여 SQL Server ODBC 드라이버를 통한 연결을 확인할 수 있습니다.
Odbcping.exe에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
138541 (http://support.microsoft.com/kb/138541/) INF: ODBCPING.EXE로 SQL Server와의 ODBC 연결 확인
ODBC DSN을 구성하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
289573 (http://support.microsoft.com/kb/289573/) PRB: SQL Server Net-Library로 DSN 구성
.udl 파일을 사용하여 SQL Server의 인스턴스에 대한 연결을 테스트할 수도 있습니다.
.udl 파일을 만드는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
244659 (http://support.microsoft.com/kb/244659/) 예제: Windows 2000에서 데이터 링크 파일을 만드는 방법
방화벽 문제 해결
클라이언트 컴퓨터와 SQL Server를 실행하는 컴퓨터 사이에 방화벽이 있으면 방화벽을 통해 통신하는 데 필요한 포트가 열려 있는지 확인하십시오.방화벽을 통해 통신하기 위해 열려 있어야 하는 포트에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
287932 (http://support.microsoft.com/kb/287932/) INF: 방화벽을 통해 SQL Server와 통신하는 데 필요한 TCP 포트
269882 (http://support.microsoft.com/kb/269882/) HOWTO: ADO를 사용하여 방화벽 뒤에 있는 SQL Server에 연결하는 방법
TCP/IP 프로토콜을 사용하여 SQL Server의 인스턴스에 연결하는 경우 텔넷 프로그램을 사용하여 SQL Server가 수신 대기하는 포트에 연결할 수 있는지 확인해야 합니다. 텔넷 프로그램을 사용하려면 명령 프롬프트에서 다음 명령을 실행하십시오.
Telnet <IP Address> <Port Number>텔넷 프로그램이 성공하지 못하고 오류 메시지가 표시되면 오류를 해결하고 다시 연결해보십시오.
참고 Slammer 바이러스로 인한 문제 때문에 사용자 데이터그램 프로토콜(UDP) 포트 1434가 방화벽에서 차단될 수 있습니다.
인증 및 보안 문제 해결
인증 오류 때문에 SQL Server에 연결하지 못할 수 있습니다. 인증에 실패하면 다음과 같은 오류 메시지 중 하나가 표시될 수 있습니다.
'<username>' 사용자가 로그인하지 못했습니다.
'NTAUTHORITY\ANONYMOUS LOGON' 사용자가 로그인하지 못했습니다.
'null' 사용자가 로그인하지 못했습니다.
인증 오류 때문에 오류 메시지가 표시되고 오류 메시지에 특정한 SQL Server 로그인 이름이 나타나지 않으면 Windows 인증 문제를 해결하십시오. Windows 인증 문제 때문에 다음과 같은 오류 메시지가 표시될 수 있습니다.
SSPI 컨텍스트를 생성할 수 없습니다.
다음 문제는 인증과 보안 문제를 발생시킬 수 있습니다.
811889 (http://support.microsoft.com/kb/811889/) "SSPI 컨텍스트를 생성할 수 없습니다." 오류 메시지 문제 해결
SQL Server 인증을 사용할 때 연결에 실패하면 다음과 같은 오류 메시지가 표시됩니다.
'<username>' 사용자가 로그인하지 못했습니다. 트러스트된 연결과 관련되지 않았습니다.
이 문제를 해결하려면 아래 단계를 수행하십시오.
경고 레지스트리 편집기를 잘못 사용하면 심각한 문제가 발생할 수 있으며 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 레지스트리 편집기를 잘못 사용함으로써 발생하는 문제에 대해 해결을 보증하지 않습니다. 레지스트리 편집기의 사용에 따른 모든 책임은 사용자에게 있습니다.
316898 (http://support.microsoft.com/kb/316898/) HOWTO: Microsoft Management Console을 사용하여 SQL Server 2000에 대한 SSL 암호화 설정
322144 (http://support.microsoft.com/kb/322144/) FIX: SECDoClientHandShake가 SQL Server에 연결할 수 없다
TCP/IP 소켓의 스트레스 문제 해결
SQL Server ODBC 드라이버, SQL Server용 Microsoft OLE DB 공급자 또는 System.Data.SqlClient 관리 공급자를 사용하는 경우 적절한 응용 프로그램 인터페이스(API)를 사용하여 연결 풀링을 해제할 수 있습니다. 연결 풀링을 해제한 경우 응용 프로그램이 연결을 빈번하게 열고 닫으면 기본 SQL Server 네트워크 라이브러리에 대한 스트레스가 증가할 수 있습니다. 경우에 따라 웹 서버와 JDBC 드라이버도 SQL Server의 인스턴스에 연결하려고 할 수 있으므로 SQL Server에 대한 연결 요청이 SQL Server가 처리할 수 있는 것보다 많아질 수 있습니다. 이렇게 되면 TCP/IP 소켓에 스트레스가 발생할 수 있으며 SQL Server 오류 로그 파일에 다음 오류 메시지가 표시될 수 있습니다.
2003-08-07 20:46:21.11 server 오류: 17832, 심각도: 20, 상태: 6
2003-08-07 20:46:21.11 서버 연결을 열었지만 잘못된 로그인 패킷을 보냈습니다. 연결이 닫혔습니다.
2003-08-07 20:46:21.11 서버 연결을 열었지만 잘못된 로그인 패킷을 보냈습니다. 연결이 닫혔습니다.
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
154628 (http://support.microsoft.com/kb/154628/) INF: TCP/IP 연결 요청이 여러 개인 경우 SQL이 17832를 기록한다
328476 (http://support.microsoft.com/kb/328476/) 풀링이 해제된 경우의 SQL Server 드라이버에 대한 TCP/IP 설정
참고 SQL Server 2000 SP3이나 SQL Server 2000 SP3a를 실행하고 있으면 로그인 패킷 수에 대한 제한이 추가되었기 때문에 TCP/IP 소켓에 스트레스가 발생하지 않을 수 있습니다. 17832 오류는 타사 드라이버를 사용하여 SQL Server의 인스턴스에 연결하면 발생합니다. 이 문제를 해결하려면 타사 공급업체에 문의하여 테스트를 통해 SQL Server 2000 SP3과 SQL Server 2000 SP3a에서 작동하는 것으로 확인된 드라이버를 구하십시오.
SQL Server의 인스턴스가 단일 사용자 모드로 시작되었는지 확인
연결하려고 하는 SQL Server의 인스턴스가 단일 사용자 모드로 시작된 경우 SQL Server와 설정할 수 있는 연결은 하나뿐입니다. SQL Server에 자동으로 연결하는 소프트웨어가 컴퓨터에서 실행 중이면 이 소프트웨어는 하나뿐인 연결을 쉽게 사용할 수 있습니다. 예를 들어, 다음 소프트웨어는 SQL Server의 인스턴스에 자동으로 연결할 수 있습니다.
SQL Server가 없거나 액세스가 거부되었습니다.
일반적으로 이 오류는 설치 프로세스가 단일 사용자 모드로 SQL Server의 인스턴스를 시작할 때 SQL 클러스터 설치와 서비스 팩 설치 중 발생합니다. 지정된 응용 프로그램은 사용할 수 있는 유일한 연결을 사용하여 SQL Server의 인스턴스에 자동으로 연결할 수 있지만 설치는 실패합니다.SQL Server의 인스턴스가 단일 사용자 모드로 시작되었는지 확인하려면 SQL Server 오류 로그 파일에 다음과 유사한 항목이 있는지 확인하십시오.
2003-07-31 11:26:43.79 spid3 경고 ******************
2003-07-31 11:26:43.80 spid3 SQL Server가 단일 사용자 모드에서 시작되었습니다. 시스템 카탈로그를 업데이트할 수 있습니다.
2003-07-31 11:26:43.80 spid3 SQL Server가 단일 사용자 모드에서 시작되었습니다. 시스템 카탈로그를 업데이트할 수 있습니다.
SQL Server에 대한 명명된 파이프 연결 확인
명명된 파이프를 사용하여 SQL Server의 인스턴스에 연결할 수 없으면 SQL Server의 인스턴스가 명명된 파이프 연결을 받아들이도록 구성되어 있는지 확인하십시오. 명명된 파이프를 테스트하는 절차에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
68941 (http://support.microsoft.com/kb/68941/) INF: 명명된 파이프를 테스트하는 절차
복구 프로세스 중 시간 초과되는 연결 문제 해결
SQL Server의 인스턴스를 시작할 때마다 SQL Server는 각 데이터베이스를 복구합니다. 이 복구 프로세스 중에 SQL Server는 커밋되지 않은 트랜잭션을 롤백합니다. SQL Server는 SQL Server의 인스턴스가 중지되었을 때 하드 디스크에 기록되지 않은 변경 내용과 커밋되는 트랜잭션을 롤포워드하기도 합니다. 복구 프로세스가 완료되면 SQL Server는 SQL Server 오류 로그 파일에 다음 메시지를 기록합니다. 복구 프로세스 중에 SQL Server가 연결을 받아들이지 않을 수 있습니다. 이때 SQL Server의 인스턴스에 연결하려고 하는 클라이언트는 다음과 유사한 오류 메시지를 받을 수 있습니다.
시간이 초과되었습니다.
SQL Server 에이전트 서비스는 SQL Server가 데이터베이스를 복구할 때까지 대기하기 때문에 시작되지 않을 수 있습니다. 따라서 SQL Server 오류 로그 파일에 다음 메시지가 표시되면 연결이 더 이상 시간 초과 오류로 인해 실패하지 않습니다.
복구 프로세스에 오랜 시간이 걸리면 복구 프로세스 문제를 추가로 해결해야 할 수도 있습니다.SQL Server의 인스턴스에 연결하는 여러 가지 방법 테스트
SQL Server의 인스턴스에 연결할 때 연결 문제가 발생하면 다음 방법 중 하나 이상을 사용하여 연결 문제를 해결할 수 있습니다.네트워크 모니터 추적 캡처
" SQL Server의 인스턴스에 연결하는 여러 가지 방법 테스트" 절에서 설명하는 단계로 연결 문제가 해결되지 않으면 네트워크 모니터 유틸리티를 사용하여 네트워크 추적을 캡처하십시오. 네트워크 추적에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
148942 (http://support.microsoft.com/kb/148942/) 네트워크 모니터를 사용하여 네트워크 트래픽을 캡처하는 방법
294818 (http://support.microsoft.com/kb/294818/) 네트워크 모니터에 대한 질문과 대답
169292 (http://support.microsoft.com/kb/169292/) TCP/IP 추적 읽기에 대한 기본 사항
102908 (http://support.microsoft.com/kb/102908/) Windows NT의 TCP/IP 연결 문제 해결 방법
더 자세한 정보를 얻으려면 SQL 프로필러 추적을 사용해야 할 수 있습니다. SQL Server를 실행하는 클러스터되지 않은 컴퓨터의 경우 네트워크 진단 도구를 사용하여 네트워크를 추적할 수도 있습니다. 네트워크 진단 도구를 사용하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
321708 (http://support.microsoft.com/kb/321708/) HOWTO: Windows 2000에서 네트워크 진단 도구(Netdiag.exe) 사용
참조
SQL Server와 관련된 다양한 연결 문제에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹(http://support.microsoft.com/newsgroups/default.aspx)에 참여하시기 바랍니다.
812817 (http://support.microsoft.com/kb/812817/) 웹캐스트: Microsoft SQL Server 2000: 연결 문제 해결 방법
319930 (http://support.microsoft.com/kb/319930/) HOWTO: Microsoft Desktop Engine에 연결
257434 (http://support.microsoft.com/kb/257434/) INF: 동일한 SQL Server 이름을 사용하는 경우 기존 DSN의 네트워크 라이브러리가 새 DSN의 네트워크 라이브러리로 대체된다
306985 (http://support.microsoft.com/kb/306985/) 명명된 파이프로 클러스터 가상 서버에 연결할 때 RPC 오류가 발생한다
313062 (http://support.microsoft.com/kb/313062/) HOWTO: Windows 2000에서 Active Server Pages를 사용하여 데이터베이스에 연결
313295 (http://support.microsoft.com/kb/313295/) HOWTO: 연결 문자열에서 서버 이름 매개 변수를 사용하여 클라이언트 네트워크 라이브러리 지정
320728 (http://support.microsoft.com/kb/320728/) HOWTO: "최대 연결 제한 수에 도달했습니다." 오류 메시지 해결
328306 (http://support.microsoft.com/kb/328306/) INF: "SQL Server가 없거나 액세스가 거부되었습니다." 오류 메시지의 잠재적 원인
247931 (http://support.microsoft.com/kb/247931/) ASP에서 SQL Server로의 연결 시 인증 방법
169377 (http://support.microsoft.com/kb/169377/) INF: Active Server Pages에서 SQL Server에 액세스하는 방법
328383 (http://support.microsoft.com/kb/328383/) INF: SQL Server 클라이언트가 연결하려 할 때 프로토콜을 변경할 수 있다
238949 (http://support.microsoft.com/kb/238949/) HOWTO: ADO 연결 문자열에서 SQL Server 네트워크 라이브러리 설정하기
270126 (http://support.microsoft.com/kb/270126/) PRB: Active/Active Cluster 7.0을 업그레이드한 후 두 SQL Server 2000 가상 서버에 대한 클라이언트 연결을 관리하는 방법
316779 (http://support.microsoft.com/kb/316779/) PRB: 프로토콜 암호화 강제 사용이 설정된 클라이언트가 IP 주소로 연결하지 못할 수 있다
216643 (http://support.microsoft.com/kb/216643/) INF: SQL Server 7.0으로 연결 추적(Trace)할 때 ODBC/OLEDB 연결 옵션이 보이지 않음
265808 (http://support.microsoft.com/kb/265808/) SQL Server 2000 명명된 인스턴스를 연결하는 방법
191572 (http://support.microsoft.com/kb/191572/) INFO: ASP에서 호출된 ADO 개체별 연결 풀 관리
313173 (http://support.microsoft.com/kb/313173/) JDBC용 Microsoft SQL Server 2000 드라이버에서 사용할 예제 연결 풀 관리자
237844 (http://support.microsoft.com/kb/237844/) HOWTO: Visual Basic ADO 응용 프로그램에서 ODBC 연결 풀링 설정
259569 (http://support.microsoft.com/kb/259569/) PRB: 타사 제품을 설치하면 Windows 2000 MDAC 레지스트리 설정이 손상된다
Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹(http://support.microsoft.com/newsgroups/default.aspx)에 참여하시기 바랍니다.