2012-09-07 12 views
9

Stiamo vivendo un problema piuttosto fastidioso nel nostro ambiente di sviluppo con il seguente messaggio ...pre-login guai stretta di mano con la connessione diretta a SQL Azure

A connection was successfully established with the server, 
but then an error occurred during the pre-login handshake. 
(provider: SSL Provider, error: 0 - The certificate's CN 
name does not match the passed value.) 

... la saggezza comunemente accettata per risolvere questo il problema è impostare la porzione di connessione TrustServerCertificate su True. Tuttavia, questo non funziona in modo affidabile o coerente.

Questo particolare errore si verifica in numerose istanze, ad esempio testando il nostro servizio WCF nel nostro emulatore di Azure che comunica con istanza di SQL Azure live/ospitata o utilizzando anche SQL Management Studio. L'unico comune denominatore che abbiamo trovato è che ciò si verifica solo quando ci connettiamo direttamente a SQL Azure anziché quando è ospitato e Azure sta parlando direttamente a SQL Azure (che funziona).

Ho provato un certo numero di tattiche per risolvere il problema (come quello dettagliato here), ad esempio credendo che fosse collegato alla connessione e rimuovendo il pool e altre modifiche alla stringa di connessione. Ma ahimè, nessuno è conclusivo e più irritante è che l'errore è intermittente e impedirà l'accesso per un breve periodo di tempo prima che si risolva magicamente.

Altri fattori che ho eliminato.

  • Stiamo utilizzando il Transcient Application Block per tentare di recuperare da questi errori, ma no.
  • Il nostro ufficio non ha un server proxy con la nostra connessione ai servizi ospitati da Azure.

Qualcun altro ha riscontrato questo problema o ha qualche suggerimento?

+0

Hummm ... un paio di idee: hai provato a copiare questo database in un altro? Mi chiedo se ci sono problemi sul server in cui ti trovi attualmente. In effetti, hai provato in un altro data center solo per i calci? Se il problema persiste, potrebbe essere il driver stesso? Sei sicuro di utilizzare i driver più recenti/SSMS più recenti? Dico questo perché quando si esegue l'hosting in Azure, sembra funzionare, quindi mi chiedo se si tratta di un problema di driver. –

+0

Grazie per il feedback.Stiamo girando su un sistema multi-tenantato che esegue essenzialmente lo stesso database? Questo potrebbe causare qualche problema particolare? Ho scaricato il nuovo SQL Native Client 11 ma ho riscontrato lo stesso problema. Non sono troppo sicuro dei passaggi necessari per spostare Data Center, è un sistema pesante, quindi non sono sicuro di quanto possa essere ... – SeanCocteau

+1

Ah: è un sistema pesante? Hummm ... Ho visto, in rari casi, una condizione specifica che si verifica quando il database SQL è sottoposto a pesanti richieste di accesso. L'errore che ho visto è stato tuttavia sulla falsariga di un errore di accesso; non esattamente lo stesso problema. Personalmente tratterei questo errore come un difetto transitorio; dovresti essere in grado di personalizzare il blocco transitorio e aggiungere questo errore specifico come errore transitorio per riprovare (per impostazione predefinita questo errore non è considerato di natura transitoria, quindi il blocco non tiene conto di esso a meno che tu non lo dica). Questo potrebbe fare il trucco. –

risposta

5

È necessario eseguire la scansione per i non-IFS Winsock LSP BSP o che non è compatibile con la bandiera FILE_SKIP_COMPLETION_PORT_ON_SUCCESS, problema deriva soprattutto dal non IFS LSP in fase di installazione.

Basta eseguire "netsh WinSock Visualizza Catalogo" dal prompt dei comandi e verificare eventuali "bandiera di servizio", che non guarda nel formato 0x20xxx

Nel mio caso ho scoperto che "Speed ​​Accelerator "con il flag di servizio 0x66, rimuovere questo software risolve il mio problema.

Maggiori informazioni si possono trovare qui: http://support.microsoft.com/kb/2568167

1

cosa fa la stringa di connessione simile? Non so se hai ancora provato questo, ma mi ricordo di avere un problema simile quando si utilizza una connessione SQL remoto a SQL Azure e ha scoperto che ho dovuto impostare:

Trusted_Connection=False;Encrypt=True 

e rimuovere eventuali timeout di connessione dalla stringa del tutto.

+0

Pensavo che impostare nome utente e password lo farebbero automaticamente, ma posso provare a impostare Trusted_Connection e vedere se è d'aiuto. 'SqlConnectionStringBuilder' non ha questa proprietà incorporata, ma FWIW http://msdn.microsoft.com/en-us/library/ee621781.aspx fa riferimento a questa proprietà. Non ha senso che ciò avvenga solo * a volte * in base alla stringa di connessione, e l'errore mi indurrebbe a credere che SQL Azure stia inviando il certificato sbagliato su un lancio di dadi sbagliato, ma potresti essere in qualche modo. Grazie per il suggerimento. –

+0

In realtà sembrerebbe che questo sia stato sostituito dalla proprietà "Sicurezza Integrata". L'impostazione manuale di "Trusted_Connection" su "SqlConnectionStringBuilder" modifica la proprietà "Sicurezza integrata". Credo che questo valore di default sia comunque falso, ma cercherò di impostarlo esplicitamente e vedere cosa succede. Per riferimento, http://stackoverflow.com/questions/3077412/what-is-the-difference-trusted-connection-and-integrated-security-in-a-c –

+0

Nessun dado. Il problema si verifica ancora in modo intermittente. –

Problemi correlati