SQL Server 클라이언트 컴퓨터가 instance 연결하려고 할 때 클라이언트가 프로토콜을 변경할 수 SQL Server

이 문서에서는 클라이언트 컴퓨터가 SQL Server instance 연결하려고 할 때 클라이언트가 프로토콜을 변경할 수 SQL Server 소개합니다.

원래 제품 버전: SQL Server
원본 KB 번호: 328383

요약

MICROSOFT MDAC(데이터 액세스 구성 요소) 버전 2.6 이상이 있는 클라이언트 컴퓨터는 여러 프로토콜 또는 IPC(Interprocess Communication) 메커니즘을 시도하여 SQL Server 대한 연결을 설정할 수 있습니다.

추가 정보

MDAC 버전 2.6 이상용으로 Dbnetlib.dll 클라이언트 쪽 네트워크 라이브러리가 향상되었습니다. MDAC 버전 2.6 이상을 사용하면 여러 프로토콜을 사용할 수 있고 첫 번째 프로토콜을 사용한 연결 시도가 실패하면 클라이언트 애플리케이션은 즉시 다른 프로토콜 중 하나를 사용하려고 시도합니다.

기본적으로 클라이언트에는 사용 가능한 프로토콜로 TCP 및 명명된 파이프가 있습니다. SQL Server 클라이언트 유틸리티를 사용하여 프로토콜 순서를 조작할 수 있습니다. 클라이언트 애플리케이션은 클라이언트 컴퓨터에 지정된 순서대로 프로토콜을 사용합니다. 프로토콜 순서는 ProtocolOrder 값 아래의 다음 레지스트리 키 위치에 저장됩니다.

HKLM\Software\Microsoft\MSSQLServer\Client\SuperSocketNetLib

SQL Server 2005를 사용하는 경우 프로토콜 순서는 다음 레지스트리 하위 키 아래의 ProtocolOrder 레지스트리 항목에 저장됩니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI<version>

예를 들어 클라이언트 컴퓨터에 TCP 및 명명된 파이프를 모두 사용할 수 있고 순서는 다음과 같습니다.

  • TCP
  • 명명된 파이프

클라이언트 컴퓨터가 서버에 대한 TCP 연결을 시도하고 연결 시도가 0이 아닌 반환 코드를 반환하면 클라이언트는 목록의 다음 프로토콜(명명된 파이프)을 사용하여 연결을 투명하게 시도합니다. 이 시나리오에서는 클라이언트가 TCP 연결을 만들 수 없습니다. 그러나 클라이언트는 명명된 파이프 연결을 성공적으로 만듭니다.

참고

클라이언트는 첫 번째 프로토콜이 실패했음을 나타내는 오류를 수신하지 않습니다.

클라이언트 애플리케이션이 두 번째 프로토콜을 사용하고 오류를 반환하는 경우 오류가 클라이언트에 반환됩니다.

다음 방법 중 하나를 사용하여 별칭을 만드는 경우 클라이언트 애플리케이션은 별칭 정보를 사용하여 서버에 대한 연결을 설정하고 추가 프로토콜을 사용하지 않습니다.

  • SQL Server 클라이언트 네트워크 유틸리티 사용
  • SQL Server 구성 관리자 사용
  • ODBC DSN(데이터 원본 이름)을 만드는 경우

클라이언트 애플리케이션이 모든 연결 시도에 사용하는 프로토콜을 제어하고 클라이언트가 여러 프로토콜을 시도하도록 허용하지 않으려면 다음 중 하나를 수행할 수 있습니다.

  • SQL 클라이언트 네트워크 유틸리티 또는 SQL Server 구성 관리자 사용하여 원하는 프로토콜을 지정하여 별칭을 만듭니다.

  • 연결 문자열 프로토콜을 지정합니다. 예를 들면

    DSN=DSNName;SERVER=servername;DATABASE=YourDataBaseName;Network=DBMSSOCN;Address=IP_Address,1433;UID=YourUID;PWD=YourPassword;
    

    이 예제에서는 네트워크 프로토콜을 로 DBMSSOCN지정합니다. 즉, TCP/IP 프로토콜을 사용하려고 합니다. 연결 문자열 내에서 프로토콜을 지정하는 경우 Dbnetlib은 지정된 프로토콜만 사용하고 다른 프로토콜을 시도하지 않습니다. 마찬가지로 명명된 파이프 프로토콜만 사용하도록 설정하려면 다음과 유사한 연결 문자열 사용합니다.

    DSN=DSNName;SERVER=servername;DATABASE=YourDataBaseName;Network=DBNMPNTW;Address=\\.\pipe\sql\query;UID=YourUID;PWD=YourPassword;
    
  • 클라이언트 네트워크 유틸리티를 사용하여 다른 프로토콜을 제거합니다.

참조

SQL Server 연결 오류 해결