INF: SQL Server 에서의 잘못된(Orphaned) 연결 문제 해결 방법

기술 자료 번역 기술 자료 번역
기술 자료: 137983 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR137983
모두 확대 | 모두 축소

요약

SQL Server 클라이언트가 SQL Server 에서 연결이 끊어졌을 때 해당 연결 프로세스는 서버에서 깨끗이 정리되어야 합니다. 어떠한 이유로 인해서 연결이 깨끗이 정리되지 않은 경우 그 연결들은 locks 와 User Connections 같은 중요한 자원을 소모 시킬 수 있는 잘못된(orphaned) 또는 실체가 없는(ghost) 프로세스가 됩니다. 일반적으로 잘못된(orphaned) 프로세스는 클라이언트 응용 프로그램의 부적절한 종료와 네트워크와 관련된 문제로 인하여 발생하며 보통 클라이언트 응용 프로그램의 문제 해결과 네트워크 설정에 대한 적절한 튜닝이 요구됩니다.

추가 정보

이러한 문제를 해결하기 위해서는 다음을 기억하시기 바랍니다.
  • 응용 프로그램으로써의 SQL Server 는 클라이언트 연결의 현재 상태를 분석하기 위하여 클라이언트 연결을 먼저 조사하지 않습니다. Named Pipes, IPX/SPX 또는 TCP/IP 소켓과 같은 낮은 레벨의 Inter-Process Communications (IPCs) 이 클라이언트 연결 처리를 담당합니다.
  • 일반적으로 IPC 는 클라이언트와 서버간의 연결을 관리하는데 있어서 자신만의 방식을 가지고 있습니다. 장시간동안 클라이언트로부터 응답을 받지 못할 경우 일반적으로 Windows NT Server 컴퓨터는 "keep alive" 를 보내어서 프로세스를 검색하거나 또는 이미 설정된 idle time보다 지난 프로세스들은 정리를 할 것입니다.
  • 클라이언트 일반 보호 오류(GPF)와 같은 특별한 상황 하에서 해당 클라이언트는 응용 프로그램이 이미 종료되었음에도 불구하고 계속해서 서버의 검색에 응답을 할 수도 있습니다. 이러한 경우에는 Windows NT Server 컴퓨터는 클라이언트가 종료될 때까지 해당 클라이언트 연결을 무한하게 유지할 수도 있습니다.
  • Windows NT Server 컴퓨터가 어떠한 이유에서라도 중단된 연결을 종료하지 않으면 SQL Server 는 그 연결자체가 계속 활성화되어 있는 것으로 간주합니다. 따라서 그러한 연결은 정리하지 않습니다.
  • Windows NT Server 컴퓨터는 연결을 성공적으로 종료했지만 sp_who 수행 결과에서 확인할 수 있는 클라이언트 프로세스가 여전히 존재한다면 SQL Server의 연결 관리에 문제가 있을 수 있습니다. 이러한 경우 이 문제를 해결하기 위해서 여러분의 일차 지원 제공자에게 문의하시기 바랍니다.
여러분의 SQL Server 상에 잘못된 프로세스가 존재하고 있다고 생각하신다면 여러분은 다음의 단계를 통하여 문제를 해결할 수 있습니다:
  1. 호스트 이름을 통해서 이들 프로세스와 관련된 응용 프로그램에는 어떤 것이 있는지 알려 주는 sp_who 를 사용하여 잘못된 프로세스를 확인합니다.
  2. 이들 잘못된 프로세스들을 확인하고 난 후 많은 연결이 사용되고 있지 않거나 어떠한 Lock도 Holding 하지 않았을 경우 이런 잘못된 프로세스들을 무시하거나 또는 SQL Server KILL 명령어를 이용하여 프로세스를 강제 종료할 수 있습니다.
  3. 먼저 응용 프로그램을 종료하지 않고 워크스테이션의 Warm 또는 Cold 재시작과 같이 부적절하게 응용 프로그램을 종료하는 사용자가 있는지 점검합니다. 워크스테이션이 일반 보호 오류(General Protection Fault) 처럼 불안정한 상태가 되어 있는 모든 기록이 있는지 점검합니다. 만일 그것들이 존재한다면 부적절한 처리과정이나 안정성의 문제점을 체크하여 정정합니다.
  4. SQL Server 가 운영되고 있는 Windows NT Server 컴퓨터상에서 IPC 세션이 아직 활성화되어 있는지 확인합니다. 여러분이 사용하고 있는 IPC 에 따라서 명령어는 달라집니다. 예를 들어서 Named Pipes 를 사용하고 있다면 명령어는 "NET SESSION" 또는 "NET FILES" 이고 TCP/IP 소켓 연결이라면 활성화된 TCP 세션을 표시하기 위해서 "NETSTAT"를 사용할 수 있으며, IPX/SPX 의 경우에는 "NWLink SPX" 에 대한 "Connections Open" 을 모니터하기 위해서 Performance Monitor 를 사용할 수 있습니다.
  5. Windows NT Server 컴퓨터상에서 IPC 세션이 여전히 활성화되어 있다면 그들 연결 작업을 유지하는 SQL Server는 정상입니다. Windows NT 가 IPC 세션을 정리하면 SQL Server는 세션을 정리한 것을 알게 되어 연결 프로세스를 정리하게 될 것입니다. 종료된 세션을 정리하기 이전에 Windows NT 가 대기해야 하는 시간을 줄이도록 Windows NT 네트워크 매개 변수를 조절할 수 있습니다.

    다시 말해서 여러분이 사용하는 IPC에 따라서 관련 매개 변수는 매우 다릅니다. 아래에서 언급한 내용과 일치하도록 레지스트리 설정을 수정하는 방법에 대해서 보시려면 Microsoft Knowledge Base 에 있는 다음의 문서를 참조하시기 바랍니다.
    120642 : TCP/IP & NBT Configuration Parameters for Windows NT

    99745 : Tuning NWLINK Registry Parameters

    1. Named Pipes: Named Pipes 는 TCP/IP, NetBEUI, 또는 NWLink IPX/SPX 와 같은 다른 전송 프로토콜(Transport Protocols)의 상위에 있는 Server Message Block (SMB) 계층 내에 구현되어 있습니다. NetBIOS 라고 하는 얇은 계층은 일반적으로 SMB 와 트랜스포트 계층 사이에서 구현됩니다. 그러므로 종료되기 이전에 오랫동안 응답이 없는 Named Pipes 세션이 얼마나 오래 대기해야 하는지를 조절하는 편리한 방법은 NetBIOS 계층과 관련된 KeepAlive 매개 변수를 조절하는 것입니다. TCP/IP 의 경우 NetBIOS 계층이 속해있는 곳이 NBT (NetBIOS over TCP) 이고 관련 매개 변수가 있는 곳은 다음의 레지스트리 키 내에서 SessionKeepAlive 입니다.
               KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netbt\Parameters
           
      프로토콜이 NWlink IPX/SPX 인 경우 관련 매개 변수가 있는 곳은 다음의 레지스트리 키 내에서 KeepAliveCount 와 KeepAliveTimeout 입니다.
               HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NWNBLink\Parameters
           
      NWLink 에 대한 일부 Named Pipes 구현은 NetBIOS 계층(DirectHosting)을 무시할 수도 있으며 이는 위에 있는 NWNBlink NetBIOS 매개 변수가 적용되지 않았다는 것을 의미한다는 점에 주의하시기 바랍니다.
    2. TCP/IP Sockets: Windows NT Server는 정기적으로 "keep alive" 패킷을 클라이언트로 보낼 것이며 클라이언트는 응답할 것입니다. 만일 어떠한 이유로 인해서 클라이언트가 그 패킷들에 대해 응답을 하지 못할 경우 Windows NT 는 미리 설정된 횟수 만큼 시도해 보고 나서 TCP 세션을 정리합니다. 관련 매개 변수가 있는 곳은 다음의 레지스트리 키 내에서 KeepAliveInterval, KeepAliveTime, TcpMaxDataRetransmissions 입니다.
               HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
           
    3. IPX/SPX: TCP/IP 와 비슷하게 Windows NT Server는 정기적으로 "keep alive" 패킷을 클라이언트로 보낼 것이며 클라이언트는 응답할 것입니다. 미리 설정된 횟수 만큼 "keep alive" 패킷 전송을 시도해 보고 나서 어떠한 응답을 받지 못한다면 Windows NT 는 SPX 연결을 정리할 것입니다. 관련 매개 변수가 있는 곳은 다음의 레지스트리 키 내에서 KeepAliveCount 와 KeepAliveTimeout 입니다.
               HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NWLnkSPX\Parametes
           
    IPC에 대한 "keep alive" 매개 변수가 Never Timeout 으로 설정되어 있다면 클라이언트가 완전하게 종료되었는데도 불구하고 Windows NT 는 해당 IPC 세션을 무기한으로 유지할 것이라는 점에 주의하시기 바랍니다. 이러한 경우에 SQL Server 는 이들 클라이언트 작업 또한 예상대로 무기한으로 유지할 것입니다.

    매개 변수에 대한 자세한 정보를 보시려면 여러분의 Windows NT 문서 또는 Windows NT 리소스 킷을 참조하시기 바랍니다. 만일 여러분의 Windows NT Server 컴퓨터가 설정 매개 변수를 설정되어 있는데로 참조하여 그 세션들을 정리하지 않았다고 의심이 된다면 여러분의 일차 SQL Server 지원 제공자와 상의하시기 바랍니다.
  6. Windows NT Server 컴퓨터상에 IPC Session 이 더 이상 존재하지 않지만 SQL Server 가 여전히 sp_who 에 의해서 보여지는 클라이언트 프로세스를 유지하고 있다면 임시방편으로 KILL 명령어를 통해 그 작업을 정리할 수 있습니다. 그리고 향후 도움에 대해서는 여러분의 일차 SQL Server 지원 제공자와 상의하시기 바랍니다.

속성

기술 자료: 137983 - 마지막 검토: 2003년 8월 19일 화요일 - 수정: 2.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 4.21a Standard Edition
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
키워드:?
ssrvlan kbusage ssrvgpf ssrvlock KB137983

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com