서버와 성공적으로 연결되었지만 사전 로그인 핸드 셰이크 중에 오류가 발생했습니다.


111

Local Environment에서 Production DB를 연결하려고 할 때 다음과 같은 오류가 발생합니다.

이전에 프로덕션 DB에 연결할 수 있었는데 갑자기 다음과 같은 오류가 발생합니다.

서버와 성공적으로 연결되었지만 사전 로그인 핸드 셰이크 중에 오류가 발생했습니다. (공급자 : TCP 공급자, 오류 : 0-핸들이 잘못되었습니다.)

Production DB의 연결 문자열이있는 로컬 PC에서 asp.net 웹 사이트를 실행하려고했는데, 다음은 로컬 환경에서 발생하는 오류에 대한 스택 추적입니다.

>    at MyWebsiteDAL.clsForumQuestion.SelectAll(Int32 CurrentPageIndex, Int32 PageSize) in D:\EDrive\My WebSites\MyWebsite\MyWebsite\MyWebsiteDAL\clsForumQuestion.cs:line 821
       at CodeConnect.Default.Page_Load(Object sender, EventArgs e) in D:\EDrive\My WebSites\MyWebsite\MyWebsite\MyWebsite\Default.aspx.cs:line 100
       at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
       at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
       at System.Web.UI.Control.OnLoad(EventArgs e)
       at System.Web.UI.Control.LoadRecursive()
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

여기서 무엇이 잘못되었을 지 아십니까?


어떤 DBMS에 연결하고 있습니까?
Will A

1
SSMS를 사용하여 로컬 PC에서 연결할 수 있습니까? 이 질문은 serverfault.com에서 더 잘 물을 것입니다
Will A

예, 연결할 수 있습니다. 내가 관찰 한 것은 갑자기 작동하기 시작하는 것이었다.
Jordon Willis

2
오류를 일으키는 근본적인 문제가 Visual Studio의 Asp.net Cassini이기 때문에이 질문은 StackOverflow (ServerFault가 아님)에 속한다고 생각합니다. 기존 Cassini (WebDev.WebServer.exe) 인스턴스를 모두 중지하고 앱을 다시 실행하는 것이 저에게 효과적이었습니다.
MikeTeeVee 2011 년

@ MikeTeeVee 간단한 WinForm 응용 프로그램에서 동일한 문제가 발생했습니다. 카시니가 관련되지 않았습니다.
Sylvain Rodrigue

답변:


154

해결책

1) VS.Net 솔루션 청소

2) 프로젝트를 다시 빌드하십시오.

3) IIS 재설정

4) 프로젝트를 다시 실행하십시오.

기본적으로 내 문제가 해결되었지만 내 경우에는이 오류가 발생하지 않았고 갑자기 로컬 환경에서 위의 오류가 발생하기 시작하므로 그 트릭이 나를 위해 작동 할 수 있습니다.


25
비슷한 문제가 있습니다 (localhost도). 핵심 포인트는 아마도 포인트 3 인 것 같습니다. 내가해야 할 일은 VS WebServer (Cassini)의 인스턴스를 죽이고 다시 빌드하고 F5를 누르는 것뿐이었습니다. 그것은 나를 위해 그것을 해결했습니다. 답변 해 주셔서 감사합니다. (솔루션으로 표시하는 것을 고려해야합니다.)
Amadiere 2011 년

1
이 솔루션은 저에게도 효과적이었습니다. 나도 Amadiere와 똑같은 IIS 대신 VS Web Server (Cassini)를 사용하고있었습니다.
Simon Lomax 2011

7
이것은 수정보다 해결 방법처럼 들립니다. 실제 문제가 연결 풀링과 관련이 있는지 궁금합니다.
jrummell

2
오늘도 이런 일이있었습니다. 관리자 명령 프롬프트에서 iisreset을 실행하기 만하면됩니다.
Ian Kemp 2014 년

6
이 답변은 근본 원인 분석을위한 몇 가지 가능한 지침을 제공함으로써 개선 될 수 있습니다. 해결 방법에는 가치가 있지만 이것이 발생하는 이유와 해결 방법이 작동하는 이유를 아는 것이 더 유용합니다.
laindir

15

-작업 내용을 저장하고
-Visual Studio를 닫은 다음
-프로젝트를 다시 엽니 다.

항상 나를 위해 작동합니다.


29
이것은 나에게도 효과가 있었지만 다시 시작하는 동안 커피를 만드는 것이 모든 차이를 만드는 것을 종종 발견합니다.
ED-209

비슷한 문제가 있었지만 대신 노드 서버가 있습니다. 우분투 VM 게스트에서 노드 서버를 실행하고 Windows 10 VM 호스트에서 액세스했습니다. VM을 일시 중지하고 저장 한 다음 Windows 10 호스트를 재설정 한 다음 VM 백업을 열면 작동했기 때문에 로컬 서버가 아닌 Windows의 문제라고 가정했습니다. 하지만 이제 방금 로컬 노드 서버를 재설정하려고했는데 그 문제도 해결되었습니다 ... 그래서 누가 알
겠습니까?


9

메모리를 많이 사용하는 프로세스를 실행할 때이 오류가 발생했습니다. 시스템에 메모리가 부족해지기 시작하자 이런 종류의 오류가 발생했습니다. RAM을 더 잘 사용하기 위해 알고리즘을 변경해야했습니다.

일부 스레드는이 예외를 던졌지 만 다른 스레드는 다음을 던졌습니다.

System.Data.SqlClient.SqlException (0x80131904) : 연결 시간 초과가 만료되었습니다. 사전 로그인 핸드 셰이크 승인을 사용하는 동안 시간 초과 기간이 경과했습니다. 사전 로그인 핸드 셰이크가 실패했거나 서버가 제 시간에 응답하지 못했기 때문일 수 있습니다. 이 서버에 연결을 시도하는 동안 소요 된 시간은 다음과 같습니다.-[사전 로그인] 초기화 = 43606; handshake = 560; ---> System.ComponentModel.Win32Exception (0x80004005) : 대기 작업 시간이 초과되었습니다.

더 적은 RAM을 사용하여 실행할 수 있도록 시스템이 변경된 후 두 문제가 모두 사라졌습니다.


1
확인했습니다. 랩톱에서 parallel.foreach를 사용하여 C #에서 SQL Server에서 집중 처리를 실행했습니다. 내 메모리 사용량이 최대였습니다. 이 오류가 발생하기 전까지 약 15 분 동안 컴퓨터를 거의 사용할 수 없었습니다.
TheLegendaryCopyCoder

8

나는 같은 문제가 있었고, 세션 데이터를 데이터베이스에 저장하고 있었고, 연결 문자열에는 Encrypt = True 가 있었는데 , SQL 클라이언트가 보안 (SSL) 모드에서 서버에 연결하도록 지시했다고 가정했습니다.


1
Windows Azure SQL 데이터베이스를 사용하려는 경우이 플래그가 연결 문자열에 추가됩니다. 다른 PaaS / IaaS / Server 공급자에게도 사용될 것이라고 확신합니다.
Parth Shah 2014


5

몇 가지 사항을 확인할 수 있습니다.

  1. 프로덕션 서버는 원격 연결을 허용합니다. (특히 DBA가있는 경우 누군가이 기능을 끌 수 있음)

  2. 연결 문자열을 확인하십시오. 때때로 IP 주소 또는 서버 이름을 사용하는 경우이 오류가 발생합니다. 둘 다 시도하십시오.


4

제 경우에는 다음과 같습니다.

Persist Security Info=True;

제거해야하는 연결 문자열에서. 일단 내가 더 이상 문제가 없었습니다.


4

제 경우에는이 오류가 dot net core 및 Microsoft.Data.SqlClient. 해결 방법은 ;TrustServerCertificate=true연결 문자열 끝에 추가 하는 것이 었습니다 .


감사합니다. 구해 주셨습니다. :)
DiPix

이것은 자체 서명 된 인증서를 사용할 때였습니다.
Geoff Gunter

3

Ricardo 의 답변에서 설명했듯이 ,

netsh Winsock reset

나를 위해 일했습니다.

PS 인터넷 다운로드 관리자 또는 IP 설정을 변경하는 프로그램이 설치되어있는 경우 컴퓨터를 재부팅 할 때이 명령을 실행하면 IDM이 설정 변경을 요청합니다.이 경우에는 NO를 설정 한 다음 응용 프로그램을 실행하면 제대로 작동합니다.

희망


3

데이터베이스에 연결할 수없는 비슷한 문제가 발생하여 여기에서 권장 사항을 시도했습니다.

하루가 끝나면 이것이 저에게 효과적이었습니다.

SQL Server 구성 관리자 도구를 사용하여 SQL Server 클라이언트 컴퓨터에서 TCP / IP 및 / 또는 명명 된 파이프 프로토콜을 사용하도록 설정했습니다.

  1. 시작을 클릭하고 모든 프로그램을 가리킨 다음 SQL Server 구성 관리자를 클릭합니다.
  2. SQL Server 네트워크 구성을 클릭하여 확장 한 다음 클라이언트 프로토콜을 클릭합니다.
  3. TCP / IP 프로토콜을 마우스 오른쪽 단추로 클릭 한 다음 사용을 클릭합니다.
  4. Named Pipes 프로토콜을 마우스 오른쪽 단추로 클릭 한 다음 사용을 클릭합니다.
  5. 메시지가 나타나면 SQL Server 서비스를 다시 시작합니다.

나는 이것이 왜 또는 언제 비활성화되었는지 여전히 잘 모르겠습니다.


2

저에게 해결책은 좀비 IIS 익스프레스 작업자 프로세스를 죽이는 것입니다.

예를 들어 작업 관리자에서 찾아 작업을 종료합니다.

여기에 이미지 설명 입력


1

나는 이와 동일한 문제가 있었고 제안 된 수정 사항에 운이 없었습니다. 그런 다음 이 기사 를 접하고 LSP를 차단하는 Sendori라는 프로그램에 대한 Mirrh의 의견을 보았습니다. 내 컴퓨터에 어떻게 들어 갔는지 모르겠지만 거기에 있었고 제거하면 문제가 해결되었습니다.

기사가 작동하지 않으면 프로그램을 확인하고 Sendori가 보이면 제거하십시오.


1

SQL Server (Sharepoint) 서비스를 다시 시작 했는데 문제가 해결되었습니다.


1

나는 코드베이스 또는 서버에 대한 chnges없이 똑같은 문제를 얻고 있었다. DB 서버는 100 % CPU에서 실행되고 SQL Server는 CPU 시간이 부족하여 시간 초과가 발생했습니다.



1

위의 대부분을 시도했지만 아무것도 작동하지 않았습니다. 그런 다음 VPN 소프트웨어 (NordVPN)를 끄고 모든 것이 정상이었습니다.


1

지난 달에 많은 솔루션을 시도했지만 아무도 효과가 없었습니다. 문제는 프로덕션 DB가 VPN 내에 있고 ISP 제공자가 HTTP 연결이 안전하지 않다고 생각한다는 것입니다. 하지만 SSMS (TCP 사용)에서 동일한 Production DB에 연결할 수있었습니다.

내 솔루션 : 휴대 전화를 핫스팟으로 사용하고 내 사무실 / 가정 Wi-Fi 대신 모바일 데이터를 사용합니다.


1
제 경우에도 마찬가지입니다. 감사!
David Lo

0

같은 문제가 있었는데 그 이유는 .NET 2.0 프레임 워크를 사용하여 컴파일 된 BCrypt.Net 라이브러리 였고,이를 사용하는 전체 프로젝트는 .NET 4.0으로 컴파일되었습니다. 증상이 동일하면 BCrypt 소스 코드를 다운로드 하고 .NET 4.0 내의 릴리스 구성 에서 다시 빌드하십시오 . 내가 한 후에 "사전 로그인 핸드 셰이크"가 잘 작동했습니다. 누구에게나 도움이되기를 바랍니다.


0

나는이 오류를 경험하고 여기에서 모든 제안을했지만 내 오류에 영향을 미치지는 않았습니다.

범인을 잡았습니다. *.ini시스템에 파일을 사용하는 경우 거기에 입력 된 서버 이름을 확인하고 web.config 연결 문자열에있는 것과 동일한 지 확인해야 할 수 있습니다.


0

여기에 동일한 문제가 있고 여기에 나열된 답변이 효과가 없었으며 온라인에서 찾을 수있는 해결책도 없습니다. 이 문제는 Windows 10 1 주년 업데이트가 내 dev PC에 적용된 직후 시작되었으며 이전 SQL Server 2005 인스턴스에만 영향을 미쳤습니다. 웹 응용 프로그램을 통해 또는 Sql Management Studio를 사용하여 인스턴스에 연결할 수 없었습니다.

그만한 가치는 이것이 나를 위해 해결 한 것입니다.

  1. SQL Server 구성 관리자를 엽니 다 (실행중인 SQL Server 버전에 따라 다름).

    • C : \ Windows \ SysWOW64 \ SQLServerManager.msc
    • C : \ Windows \ SysWOW64 \ SQLServerManager10.msc 또는
    • C : \ Windows \ SysWOW64 \ SQLServerManager12.msc 또는
    • 기타
  2. SQL Server 서비스 선택

  3. 문제가있는 서비스를 찾고 속성보기

    • 예 : 제 경우에는 SQL Server (SQL2005)
  4. 로그온 탭에서 "내장 계정"을 "네트워크 서비스"로 변경합니다.

이 임의의 솔루션이 말한 내용은 거의 다음과 같습니다 . -서버와 함께 성공적으로 설정되었지만 사전 로그인 핸드 셰이크 -12405.html 중에 오류가 발생했습니다.

아무 이유없이 네트워크 서비스를 선택했습니다. 광산은 이미 로컬 시스템을 사용하도록 구성되었습니다. 이 보안은 내 로컬 개발 머신에서만 문제가되고 로컬로만 액세스되므로 나에게 중요하지 않습니다. 왜 이것이 작동하는지 조언 할 수는 없지만 작동했습니다.


0

제 경우에는 원격 데이터베이스에 액세스하려고 할 때 오류가 발생했습니다. 그러나 SQL Server Browser 서비스를 시작하여 해결했습니다.

여기에 이미지 설명 입력


0

이전 SQL Server에 연결하는 경우 :

System.Data에서 전환합니다. SqlClient.SqlConnection to System.Data. OleDb.OleDbConnection

OleDb 연결 문자열을 사용하십시오.

<connectionStrings>
<add name="Northwind" connectionString="Provider=SQLOLEDB.1; Data Source=MyServer; Initial Catalog=Northwind;  Persist Security Info=True; User ID=abc; Password=xyz;" providerName="System.Data.OleDb" />
</connectionStrings>

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