
SQL Server 클라이언트가 내 로컬 네트워크의 다른 노드에서 실행 중인 SQL Server에 대한 연결을 중지한 이유는 무엇입니까?
이것은 오랫동안 올바르게 작동해 왔습니다. 이틀 전에 클라이언트 PC(PC A)가 연결되었습니다. PC A 또는 SQL Server(MYSERVER)를 호스팅하는 PC에서는 아무것도 변경되지 않았습니다. 연결하려고 하면 "SQL Server에 연결하는 동안 네트워크 관련 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스할 수 없습니다."라는 오류가 나타납니다. 다른 PC인 PC B에서 동일한 SQL Server 인스턴스에 성공적으로 연결할 수 있습니다.
두 PC 모두 C# 프로그램에서 동일한 연결 문자열을 사용하고 있지만 PC A의 SQL Server Management Studio에서도 연결이 실패하는 것을 확인했습니다. 또한 서버 이름을 서버 노드의 IP 주소로 변경하면(예: 192.168.178.20\SQLEXPRESS가 연결되지만 MYSERVER\SQLEXPRESS가 연결에 실패하면) SQL Server Management Studio의 연결이 작동합니다. Windows 또는 SQL 클라이언트가 호스트 이름을 확인하지 못하는 것 같습니다(며칠 전까지는 그랬지만).
두 대의 클라이언트 PC와 서버 PC는 Windows 10을 실행하고 있습니다. 로컬 네트워크는 도메인이 아닌 작업 그룹입니다. 두 클라이언트는 Windows 인증을 사용하여 서버에 연결합니다.
PC A에서 확인했습니다.
HOSTS 파일에 주소가 포함되어 있지 않습니다.
MYSERVER를 ping하면 올바른 주소 192.168.178.20으로 확인됩니다.
SQL 별칭이 없습니다
PC는 라우터의 올바른 DNS 서버를 사용합니다.
해결 방법으로 호스트 파일에 MYSERVER를 포함시키고 MYSERVER의 IP 주소를 고정 주소 192.168.178.20으로 변경했지만 이를 영구적으로 원하지 않습니다.
서버 이름이 확인되지 않는 이유나 추가 조사를 위해 무엇을 할 수 있는지 제안해 주시겠습니까?
답변1
이에 대한 대답은 간단했습니다. 라우터를 재부팅했습니다.
나는이 문제를 다음의 도움으로 고쳤습니다.와이어샤크. 클라이언트의 Windows HOSTS 파일에 서버 주소가 있을 때(SQL Server에 대한 연결이 항상 작동했을 때)와 HOSTS 파일이 비어 있을 때(클라이언트 PC가 연결되지 않았을 때) 클라이언트 PC와 서버 사이의 패킷을 비교했습니다. . 두 경우 모두 TCP 패킷이 교환되는 것을 볼 수 있었지만 호스트 파일의 서버 주소에는 암호화된 연결을 위한 TLS 패킷도 있었습니다. 다른 경우에는 클라이언트가 서버에 연결 요청을 보내는 것처럼 보였지만 TLS 암호화된 데이터가 없었습니다.
라우터에 DNS 문제가 있을 수 있습니다. 클라이언트에서 서버로의 ping이 작동했지만 약간의 지연이 있었습니다. 클라이언트가 라우터에서 서버 주소를 확인하여 TCP 패킷을 성공적으로 보낼 수 있었지만 Windows 인증을 시도할 때 지연이 있었고 이로 인해 클라이언트가 인증 요청을 올바르게 보내지 못한 것으로 생각됩니다.
어쨌든, 라우터를 재부팅하면 DNS 문제가 모두 해결되었으며 이제 클라이언트는 Windows HOSTS 파일의 서버 주소가 필요 없이 연결됩니다.