2014-10-13 15 views
6

Mi sto connettendo al database MSSQL tramite la mia applicazione ASP .NET, ma a volte ho ricevuto questo errore durante l'apertura della connessione.SQL Server Pre-Login Handshake

Timeout connessione scaduto. Il periodo di timeout è scaduto durante il tentativo di utilizzare la conferma di handshake pre-accesso. Ciò potrebbe essere dovuto al fatto che l'handshake pre-accesso non è riuscito o che il server non è stato in grado di rispondere in tempo. La durata spesa durante il tentativo di connessione a questo server era - [Pre-Login] initialization = 3; handshake = 14996;

Per risolverlo temporaneamente, devo riavviare IIS. Sto usando questo frammento di codice per la connessione a MSSQL:

 using (SqlConnection connection = new SqlConnection(connectionString)) 
     { 
      connection.Open(); 

      /* my commands here */ 

      connection.Close(); 
      connection.Dispose(); 
      SqlConnection.ClearPool(connection); 
     } 

ho permesso la porta 1433 nelle regole in entrata e in uscita, ma nessun cambiamento. Come ho seguire le istruzioni:

ma nulla è cambiato.

risposta

2

Secondo MSDN Doc.

ClearPool libera pool di connessioni che è associato con le connessioni addizionali connection.If sede di collegamento sono in uso al momento della chiamata, vengono contrassegnati in modo appropriato e vengono scartati (invece di essere restituite al pool) quando Close è chiamato su di loro.

si dovrebbe utilizzare il metodo ClearPool prima connection.close

riferiscono: https://msdn.microsoft.com/zh-tw/library/system.data.sqlclient.sqlconnection.clearpool(v=vs.110).aspx

e se si utilizza Uso della sintassi per gestire oggetto si should't utilizzare il metodo connection.close

perché chiamerà quando corrono alla fine. basta aprire il vostro collegamento ed eseguire il vostro comando

using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     connection.Open(); 
     SqlConnection.ClearPool(connection); 
     /* my commands here */ 
     SqlCommand cmd = new SqlCommand("your command",conn); 
     cmd.ExecuteReader() 


    } 

riferiscono esempio: https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

ultima garantire SQL Server Network Config v'è ragione

enter image description here

enter image description here

+0

fosse mai un soluzione trovata per questo? Sto ottenendo l'errore simile ma da SSMS (Management Studios) quando provo a connettermi a un server SQL da un m/c remoto. – Aamir

+0

@Aamir hai controllato le impostazioni del tuo firewall? se dal remoto dovresti aprire la porta 1433 (predefinita) per SQL Server –

+0

@KingJk la domanda originale riguardava eventi sporadici di indisponibilità. Il firewall funzionerebbe sempre o si interromperà sempre no? Inoltre ho lo stesso problema. Stretta di mano stretta di mano in Management Studio. (Come una volta a settimana) –