Windows 인증 사용시 SQL Server Management Studio 연결이 느리거나 시간 초과 됨


23

Windows 인증을 사용하여 TCP를 통해 SQL Server 2012 인스턴스에 연결하려고 할 때 SQL Server Management Studio 2014에서 지연이 매우 길어집니다 (10 ~ 30 초) . 이것은 개체 탐색기 또는 새로운 빈 쿼리 창을 연결할 때 발생합니다. 연결되면 쿼리 실행이 빠릅니다. SQL Server 인증을 사용하여 연결할 때 문제가 발생하지 않습니다.

환경:

  • Windows 7, 도메인 사용자로 로그인
  • IP 주소를 통한 TCP 연결 (호스트 이름 아님)
  • 서버가 VPN을 통해 연결된 원격 위치에 있습니다
  • 암호화 없음

도메인 계정으로 동료의 Windows 7 컴퓨터에 로그인하고 동일한 VPN을 통해 동일한 SQL Server에 연결했을 때 지연이 없었습니다. 같은 동료가 자신의 도메인 계정으로 내 PC에 로그인했을 때 지연이 발생했습니다. 이 테스트 는 문제가 내 PC에 고유 하다는 것을 보여줍니다 . 또한이 특정 SQL Server 및 VPN에 연결할 때만 문제가 나타납니다. 지연없이 Windows 인증을 통해 로컬 네트워크의 다른 SQL Server에 연결할 수 있습니다.

내가 시도하지 않은 것들 : 성공하지 못한 것들 :

  • 바이러스 백신 및 방화벽 비활성화
  • SSMS가 사용자 설정을 다시 만들도록 "% userprofile % \ AppData \ Roaming \ Microsoft \ SQL Server Management Studio"아래의 "12.0"폴더 이름을 "_12.0"으로 변경했습니다.
  • 네트워크 프로토콜을 TCP 대신 강제로 <default> . Named Pipes도 시도했지만 서버가 설정되지 않았습니다.
  • SSMS 2012를 설치하고 2014 대신에 시도했습니다.
  • 비활성화 된 IPv6
  • 내 etc \ hosts 파일에서 crhol.microsoft.com을 127.0.0.1로 Blackholed
  • SSMS, Visual Studio 및 Windows에서 고객 환경 개선 프로그램을 비활성화했습니다.
  • 내 PC에서 모든 SQL Server 관련 앱을 제거하고 2012 년만 다시 설치했습니다.

TCPView 단서 :

  • TCPView를 사용하여 새 연결을 만들 때 상태가 즉시 ESTABLISHED가되었지만 SQL Server와의 연결이 하나 이상 계속 TIME_WAIT으로 시도되고 닫힙니다 . 동료의 컴퓨터에서 이러한 연결은 확립되어 있고 확실합니다. 이것이 타임 아웃의 원인이라고 확신하지만 연결은 무엇이며 왜 실패합니까? (SSMS에 애드온이 없습니다.)

어떤 아이디어?

업데이트 : Intellisense / Autocomplete clue (?) :

연결이 완료되면 Intellisense / Autocomplete가 작동하지 않는 것으로 나타났습니다. SSMS와 별도의 연결이 필요합니까? 나는 그들을 비활성화하려고 시도했지만 긴 연결 지연을 해결하지 못하는 것 같습니다.


/ log 스위치를 사용하여 SSMS를 실행 해 보셨습니까?
Mister Magoo 2016 년

@MisterMagoo는 지금 그것을 시도하고 있습니다. 실제로 연결 시도에 대해 아무것도 기록하지 않습니다 (새 연결을 만들 때 파일이 커지지 않음). "캐시에서 성공적으로로드 된 구성 요소 어셈블리"와 같이 UI에 특정 패키지를로드하는 것과 관련이 있습니다. 오류나 예외를 찾을 수 없습니다.
Jordan Rieger 2016 년

그래, 나는 그것이 확실하지 않다, 그러나 그것이 빠른 시도의 가치가 있다고 생각했다. 진행중인 작업에 관심이있는 경우 Sysinternals Process Monitor를 분석하고 진행중인 작업을 식별 할 수 있는지 확인해야합니다. technet.microsoft.com/en-us/library/bb896645.aspx
Mister Magoo

나는 약 1 시간 동안 ProcMon 덤프를 쳐다 보았지만 너무 많은 이벤트 (Ssms.exe로 필터링 됨)가 많기 때문에 많은 것을 할 수 없습니다.
Jordan Rieger 2016 년

@MisterMagoo 내가 볼 수있는 것은 TcpView로 본 연결 시도가 실제로 오랜 시간이 걸리는 것입니다 (각각 5 초 이상). 특정 로컬 포트에서 "TCP Connect"이벤트를보고 다음 번에 해당 로컬 포트에서 보내거나받는 것이 항상 5 초 이상인 것을 볼 수 있습니다.
Jordan Rieger 2016 년

답변:


19

동료가 서버에 연결되어있는 동안 SQL 프로필러를 사용하여 추적을 실행 해보십시오.
RPC, SQL Statement & PreConnect-시작 / 완료를 선택하십시오.
결과를 테이블에 저장 옵션을 선택한 다음 두 테이블을 비교하여 병목 현상을 찾으십시오.

또는 IP로 연결하기 때문에 역방향 DNS 조회를 수행 할 수 있습니다. 그렇다면 호스트 파일에 항목을 추가하십시오.


2
서버의 IP 주소에 대한 로컬 etc / hosts 항목을 추가 한 다음 SSMS를 다시 시도했습니다. 빙고! 초고속. 고맙습니다! (이전에는 호스트 이름이 아닌 IP 주소를 통해 SSMS 연결을 유지했습니다.) 왜이 해결 방법이 필요한지 궁금하지만 동료에게는 필요하지 않습니다. DNS와 관련이있는 것 같습니다. 어쨌든 이것은 나에게 아주 좋은 해결책이므로 답변을 업데이트하면 현상금을 수여합니다.
Jordan Rieger 2016 년

호스트 항목을 제거 할 때 핑-###. ###. ###. ###이 첫 번째 핑 전에 매우 느리기 때문에 역방향 조회라고 생각합니다 (역방향 조회의 경우 5 초 일시 중지) 호스트 항목을 다시 추가하면 ping -a가 빠릅니다. 그러나 tracert 또는 nslookup에는 차이가 없었습니다. 내 동료가 그렇지 않은 경우 (또는 속도가 훨씬 빠릅니다.) BTW, 내 Intellisense는 연결 속도가 빠르기 때문에 다시 작동합니다. 내 PC에서 무언가 달라야한다고 생각합니다.
Jordan Rieger 2016 년

hosts 파일의 IP에 대한 가짜 DNS 항목이라도이 작업이 훨씬 빨라집니다! 고맙습니다!
felickz

대답을 읽을 때까지 VPN을 통해 SSMS를 연결하려고 시도하는 시간 초과가 발생했습니다. 예, IP를 통해 서버에 연결하고 이름 확인이 작동하지 않기 때문에 의미가 있습니다. 호스트 파일에 항목을 추가하면 결국이 작업을 시도하는 데 몇 시간이 지나면 작동하게되었습니다. 감사! 각주로서 runas / netonly와 함께 다른 도메인의 Windows 인증을 사용하고 있으며이 솔루션에서 제대로 작동한다고 말하고 싶습니다.
RobbZ

5

먼저 확인해야 할 것은 서버 또는 클라이언트 DNS 설정입니다

SQL Server에 Active Directory 연결에 문제가있는 경우는 드 rare니다. 로컬 Windows 계정으로 시도하면 문제가 없을 것입니다. 서버가 퍼블릭 인터넷 DNS로 구성되어있는 것은 드문 일이 아니며 SQL Server가 DC에 연결하여 자격 증명을 확인하고 확인하면 AD의 DNS 서버 대신 퍼블릭 DNS에 최상위 연결을 시도합니다. 이 정보는 공용 DNS에 저장되지 않으므로 확인에 실패하고 NTLM을 통해 올바른 DNS 서버 또는 DC에 연결할 때까지 지연됩니다

다른 SQL Server에서 문제가 발생하지 않았기 때문에 문제는 AD 또는 DC 구성과 관련이 없습니다.

화재 의 Ipconfig.exe / 모든 구성된 DNS 서버를 확인하기 위해 cmd를에서 명령을. AD의 DNS 서버 만 구성해야합니다. 모든 공용 DNS 서버를 제거하고 AD의 DNS 서버 만 남겨 둡니다.


SQL Server가 도메인 컨트롤러의 IP 주소를 조회하기 위해 퍼블릭 DNS에 연결 중이며 Windows 인증의 유효성을 검사 할 때 지연이 발생한다고 제안하고 있습니까? 이 경우, 동일한 VPN을 통해 동일한 로컬 네트워크의 동료 PC에서 제대로 작동하는 이유는 무엇입니까? 컴퓨터에서 DNS 설정을 확인한 결과 IP 부서에서 추가를 요청한 추가 세 번째 DNS 서버가 있었는데 동료 PC에는 없었습니다. 그러나 해당 서버를 제거하고 ipconfig / flushdns를 수행 한 후 다시 시도해도 여전히 느립니다.
Jordan Rieger 2016 년

호스트 이름뿐만 아니라 서버의 IP 주소 또는 FQDN을 사용하면 큰 차이가 생겼습니다. 필자의 경우 느린 DNS 문제였습니다.
userSteve

0

다음 C:\Windows\System32\drivers\etc\hosts과 같이 줄을 추가하여 파일을 확장 했습니다.

201.202.203.204     mysqlserver

201.202.203.204 SQL Server의 IP 주소입니다.

mysqlserver -원하는 이름 (어디서나 사용할 필요는 없음).

이로 인해 서버가 더 빨라졌습니다.

감사합니다 : d -_- b, Jordan, Rieger, felickz, RobbZ


0

도메인 네트워크 프로파일에 대해 SQL 서버에서 Windows 방화벽을 끄십시오.

  • Powershell 시작
  • Get-NetFirewallProfile -Profile Domain현재 상태를 확인하기 위해 실행
  • 활성화 된 경우 : Set-NetFirewallProfile -Profile Domain -Enabled False를 실행 하여 끕니다.

이 경우 나중에 다시 켜고 설정을 미세 조정할 수 있습니다. 또는 안전한 환경에있는 경우 그대로 둘 수 있습니다.

이상한 점은 Windows 방화벽이 통신을 차단하더라도 여전히 연결할 수는 있지만 초기 핸드 셰이크 및 후속 요청이 모두 매우 느리다는 것입니다. 내 이론은 (실제 증거가 없음) 이러한 경우 통신은 원격 PC 사이에서 훨씬 느리게 명명 된 파이프로 전달된다는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.