SQL Server 연결 문제를 해결하기 위해 데이터 수집
이 문서는 특정 범주에 따라 관련 질문을 하여 SQL Server 연결 문제의 근본 원인을 식별하는 데 도움이 됩니다. SQL Server 연결 문제 해결을 위한 권장 필수 구성 요소 및 검사 목록에는 수집해야 할 가장 중요한 항목이 포함되어 있지만 이 문서의 질문은 연결 문제의 원인을 좁히고 효과적으로 해결하는 데 도움이 될 수 있습니다.
참고 항목
모든 질문이 모든 문제에 적용되는 것은 아닙니다. 그러나 이러한 질문은 연결 문제를 해결하는 방법을 고려할 때 안내할 수 있습니다.
이 문서에 제공된 정보를 사용하여 문제의 정확한 특성에 대해 제로인할 수 있게 되면 오류 유형에 대한 SQL Server의 일관된 인증 문제 개요를 참조하세요.
데이터 수집 방법
데이터를 수집하려면 PSR(문제 단계 레코더), 네트워크 추적 및 NETLOGON 추적과 같은 도구를 사용할 수 있습니다. 이 섹션에서는 이러한 모든 도구의 조합을 설치하고 구성하는 자세한 단계를 제공합니다.
클라이언트 컴퓨터와 서버 컴퓨터 모두에서 이러한 단계를 동시에 수행합니다. 애플리케이션이 3계층 또는 n계층 아키텍처인 경우 중간 서버에서도 설치를 실행합니다.
영향을 받는 모든 컴퓨터에 WireShark를 설치하거나 기본 제공
NETSH
명령(Windows 2008 이상 버전)을 사용합니다. 다시 시작하지 않아도 됩니다.다음 명령을 실행하여 클라이언트 및 모든 서버에서 NETLOGON 디버그 로깅을 사용하도록 설정합니다.
NLTEST /DBFLAG:2080FFFF
가능하면 다음 단계 중 하나를 수행합니다.
- 고객 컴퓨터를 다시 시작합니다.
- 사용자에게 로그오프하고 다시 로그인하도록 요청합니다.
- 클라이언트 애플리케이션을 닫고 다시 엽니다.
클라이언트 컴퓨터에서 문제 단계 레코더(psr.exe)를 시작한 다음, 레코드 시작을 선택합니다.
이 도구는 문제 앞에 오는 모든 사용자 작업을 정확하게 캡처하고 결과를 .zip 파일에 저장합니다.
모든 컴퓨터에서 네트워크 캡처를 시작합니다.
NETSH를 사용하는 경우 명령을 실행합니다
NETSH TRACE START CAPTURE=YES TRACEFILE=C:\TEMP%computername%.ETL
(적절한 파일 또는 경로 이름 사용).명령을 실행하여 모든 컴퓨터에서 DNS(도메인 이름 시스템) 캐시를 플러시합니다
IPCONFIG /FLUSHDNS
.명령을 실행하여 모든 컴퓨터에서 NETBIOS 캐시를 지웁합니다
NBTSTAT /RR
.명령을 실행하여 클라이언트 Kerberos 티켓을 제거합니다
KLIST purge
.명령을 실행하여 각 서버에서 티켓을 지웁합니다
KLIST -li 0x3e7 purge
.참고 항목
명령을 입력합니다. 하이픈이 긴(em) 대시로 변환될 수 있으므로 명령줄에 복사하여 붙여넣지 마세요.
KLIST
은 대/소문자를 구분합니다.문제를 재현합니다.
psr.exe 기록을 중지합니다.
네트워크 캡처를 중지합니다. 의미 있는 이름을 사용하여 NETSH
NETSH TRACE STOP
명령을 실행하여 기록된 파일을 저장합니다. 예를 들어 파일 이름은 SQLProd01.netmon.cap일 수 있습니다.명령 프롬프트가 다시 나타날 때까지 기다린 다음 창을 닫습니다. 프롬프트가 나타나기 전에 명령 프롬프트 창을 닫지 마세요.
NETLOGON 로그를 C:\windows\debug\netlogon.log 복사하고 파일에 의미 있는 이름을 지정합니다. 예를 들어 SQLProd01.netlogon.log.
명령을 실행하여 로깅을
NLTEST /DBFLAG:0x0
사용하지 않도록 설정합니다.
데이터를 수집하여 문제를 분류합니다.
다음 질문 세트는 문제가 발생하는 범주를 찾을 수 있도록 설계되었으므로 문제 해결의 올바른 방향을 안내합니다. 관련 질문에 대한 각 드롭다운을 선택합니다.
특정 질문을 시작하기 전에 SQL Server 연결에 필요한 모든 필수 구성 요소가 충족되었는지 확인합니다. 필수 구성 요소에 대한 자세한 내용은 SQL Server 연결 문제 해결을 위한 권장 필수 구성 요소 및 검사 목록을 참조하세요.
더 넓은 관점 질문
- 이 문제는 데이터베이스 연결만 영향을 주나요, 아니면 웹 및 파일 공유 연결에도 영향을 주나요? 많은 경우는 데이터베이스 서버에서 발생하므로 SQL Server 팀에 보고됩니다. 그러나 문제가 데이터베이스와 전혀 관련이 없으며 더 일반적인 Windows 또는 Active Directory 지원이 필요할 수 있습니다.
- 사용자 도메인, 클라이언트 도메인 또는 서버 도메인이 다른 경우 트러스트 관계가 존재하나요? 외부, 포리스트, 단방향, 양방향 또는 없음인가요?
- 모든 리소스가 동일한 도메인에 있는 경우 연결이 올바르게 작동하나요?
- 문제가 간헐적이거나 주기적인가요 아니면 일관성이 있나요?
- 두 명 이상의 사용자가 애플리케이션을 사용하는 경우에만 문제가 발생하나요? 더 많은 사용자가 사용하는 경우 더 자주 발생하나요?
- 이 문제는 하루 중 특정 시간 또는 특정 요일에만 발생하나요?
- 백업을 수행하거나 데이터베이스를 다시 인덱싱할 때만 문제가 발생하나요?
- 문제가 둘 이상의 서버에 영향을 주나요?
- 이 문제는 n-노드 클러스터의 한 노드에만 영향을 주나요? 그렇다면 해당 특정 노드를 다시 빌드하는 것이 더 효율적일 수 있습니다.
- 이 문제는 여러 클라이언트 중 하나 또는 두 개의 클라이언트에만 영향을 주나요? 그렇다면 다시 빌드하는 것이 더 효율적일 수 있습니다.
- 이 문제는 TCP(또는 그 반대)가 아닌 명명된 파이프에만 영향을 주나요?
- SQL Server 로그인 및 TCP/IP를 사용할 때 문제가 발생하나요?
- 실패한 사례와 비교할 수 있는 작업 사례가 있나요? 시스템은 어떻게 다른가요?
클라이언트 컴퓨터
클라이언트 컴퓨터의 다양한 구성 요소에 대한 데이터를 수집하려면 다음 질문을 사용합니다. 이 데이터는 문제를 식별하는 데 유용할 수 있습니다.
운영 체제 이름, 버전 및 버전(WinVer)은 무엇인가요?
SQL Server 드라이버 또는 공급자의 이름과 버전은 무엇인가요?
컴퓨터 이름 및 IP 주소는 무엇인가요?
컴퓨터의 도메인 상태는 무엇인가요? 도메인에 가입된 경우 도메인 이름은 무엇인가요?
어떤 애플리케이션 런타임 환경이 사용됩니까? 예를 들어 인터넷 정보 서비스(IIS), Windows Forms, Web Sphere 또는 SSIS(SQL Server Integration Services) 작업입니다.
사용되는 애플리케이션 언어는 무엇인가요?
사용되는 연결 문자열 무엇인가요?
서버에 연결하는 데 사용되는 인증 유형은 무엇인가요? 예를 들어 NTLM(New Technology LAN Manager), Kerberos, SQL 또는 AAD(Azure Active Directory)가 있습니다.
애플리케이션이 서버 또는 서비스인 경우 백 엔드 데이터베이스에 사용자 자격 증명을 위임하나요?
제한된 위임이 사용되었나요?
애플리케이션 서비스 계정 및 도메인이란?
사용되는 서비스 유형은 무엇인가요? 물리적, 가상 또는 클라우드인가요? 예를 들어 IaaS, 웹앱, 웹 역할 또는 Power BI입니다.
클라이언트 드라이버란? JDBC(Java Database Connectivity)입니까, 아니면 Linux 또는 Mac에서 실행하나요?
참고 항목
워크플로는 현재 Windows 지향적입니다.
이 문제는 SQL Native Client 및 이후 드라이버(또는 그 반대의 경우도 마찬가지)와 같은
Provider=SQLOLEBD
Driver={SQL Server}
레거시 공급자에만 영향을 주나요?하나의 애플리케이션 또는 여러 애플리케이션에서만 문제가 발생하나요?
다른 SQL Server 기반 서버에 연결하려고 할 때 UDL(유니버설 데이터 링크) 파일이 실패하나요, 아니면 문제가 있는 서버만 연결하지 못합니까?
사용자가 SQL Server 기반 서버에 로그인하고 SSMS(SQL Server Management Studio)를 사용하여 연결을 시도하나요?
FQDN(정규화된 도메인 이름)을 사용할 때(또는 그 반대의 경우도 마찬가지) 서버의 NETBIOS 이름을 사용하는 경우에만 문제가 발생하나요? IP 주소를 사용하여 작동하나요?
Windows 10 Enterprise Edition을 실행하는 클라이언트에 Credential Guard 기능이 켜져 있나요? 그렇다면 전체 위임 시나리오에 영향을 줄 수 있습니다.
로그 정보
로그 파일에 대한 데이터를 수집하려면 다음 질문을 사용합니다.
- 호출 스택의 정확한 오류 메시지는 무엇인가요?
- 로그가 SQL Server ERRORLOG 및 ERRORLOG.1 파일에서 수집되었나요?
- 애플리케이션 이벤트 로그가 클라이언트 및 서버에서 수집되었나요?
- 클라이언트 애플리케이션 로그 파일 및 구성 파일이 수집되었나요? 예를 들어 web.config, rsreportserver.config, *.config 또는 *.ini.
- 컴퓨터, 라우터 등을 보여 주는 네트워크의 시각적 표현이 있나요?
새 문제 또는 기존 문제
문제가 최근 개발인지 또는 잠시 동안 지속되었는지 여부를 확인하는 것을 참조합니다.
- 문제가 항상 존재했거나(새 설치) 최근에 파산하기 전에 애플리케이션이 제대로 작동했나요?
- 애플리케이션이 올바르게 작동하는 데 사용된 경우 환경에 어떤 변경이 적용되었나요? 예를 들어 설치된 업데이트, 업그레이드된 도메인 컨트롤러, 방화벽 설정 변경, 서비스 해제된 도메인 컨트롤러 또는 도메인의 다른 OU로의 이동이 있습니다.
서버 컴퓨터
연결된 서버의 경우 중간 계층 서버와 백 엔드 서버 모두에 대한 서버 정보를 수집합니다. IIS-SQL 위임 문제의 경우 web.config 및 인증 설정을 포함하여 웹 서버에 대한 정보를 수집합니다.
- 운영 체제 이름, 버전 및 버전(Winver)의 이름은 무엇인가요?
- 데이터베이스의 이름과 버전은 무엇인가요?
- 컴퓨터의 이름은 무엇인가요?
- IP 주소란?
- 컴퓨터가 도메인에 가입된 경우 도메인 이름은 무엇인가요?
- SQL Server 서비스 계정 및 도메인이란?
- SQL Server 인스턴스의 이름은 무엇인가요?
- 어떤 프로토콜을 사용하도록 설정합니까?
- 서버에서 수신 대기하는 포트는 무엇인가요?
- 서버 파이프의 이름은 무엇인가요? 오류 로그에서 이 정보를 찾을 수 있습니다.
- 사용되는 환경 유형은 무엇인가요? 물리적, 가상 또는 클라우드인가요? 예를 들어 IaaS(Azure VM(Virtual Machine)의 SQL) 또는 PaaS(Azure SQL Database, MI(SQL Managed Instance)))
- 데이터베이스가 독립 실행형, 클러스터형, 미러링 또는 Always On을 사용하여 배포되었나요?
- 장애 조치(failover) 파트너 이름 및 IP 주소란?
- 가상 클러스터 이름 또는 수신기 이름 및 포트란?
- 가상 IP 또는 수신기 IP는 무엇인가요?
- 데이터베이스가 설치된 운영 체제는 무엇인가요? Windows, Linux 또는 Mac인가요? 이는 데이터 수집에 영향을 줄 수 있습니다.
- 데이터베이스의 위치는 무엇인가요? Azure에 있나요?
- 최신 서비스 팩 및 누적 업데이트 측면에서 서버의 현재 상태는 무엇인가요? 이미 해결된 문제를 디버깅할 때는 아무 소용이 없습니다.
- TLS(전송 계층 보안) 1.2를 지원하도록 SQL Server가 최근에 업그레이드되었나요? 클라이언트도 업데이트되었나요? TLS 1.0이 꺼져 있나요?
- SQL Server 서비스의 현재 상태는 무엇인가요? 실행 중입니까?
- SQL Browser 서비스의 상태는 무엇인가요? 실행 중입니까?
- 서비스 계정에 대한 문제의 특이성은 무엇인가요? 다른 서비스 계정을 사용하여 서버를 실행하면 문제가 해결됩니까?
사용자 정보
다음 사용자 세부 정보를 수집합니다.
- 사용자가 클라이언트 컴퓨터에 직접 로그인하거나 원격으로 액세스하나요? 예를 들어 사용자가 브라우저를 사용하나요?
- 사용자가 SQL 에이전트와 같은 서비스인가요? 프로세스 ID를 사용 중이거나 저장된 자격 증명이 사용되고 있나요?
- 클라이언트 애플리케이션에 연결하는 데 사용되는 인증 유형은 무엇인가요? Windows, Forms 인증 또는 AAD인가요?
- 사용자가 통합 보안을 사용하여 서버에 연결하나요?
- 사용자 이름 및 도메인 이름은 무엇인가요?
사용자가 클라이언트 애플리케이션에 원격인 경우 다음 세부 정보를 수집합니다.
- 컴퓨터 이름 및 IP 주소는 무엇인가요?
- 컴퓨터 도메인에 가입되어 있나요? 그렇다면 도메인 이름은 무엇인가요?
- 사용자가 VPN 또는 프록시 서버를 통해 연결하고 있나요? 두 방법 중 하나가 직접 연결된 경우 문제가 발생하나요?
- 사용자가 웹 서버에 연결하는 경우 서버 부하가 분산되어 있나요?
- 끈적끈적한 세션 또는 세션 선호도가 사용되나요?
- 사용자가 터미널 서버 또는 점프 상자에 로그인하여 애플리케이션에 액세스하고 있나요?
- 이 문제는 특정 OU(조직 구성 단위)의 사용자만 영향을 주나요?
- 사용자, 클라이언트 또는 서버가 Active Directory의 다른 OU(조직 구성 단위)로 이동되었나요?
- 이 문제는 관리자가 아닌 사용자에게만 영향을 주나요?
- 이 문제는 특정 도메인의 일부 사용자에만 영향을 주나요?
참고 항목
타사 정보 고지 사항
이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 안정성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.