2012-09-07 16 views
9

Obecnie przeżywa dość kłopotliwy problem w naszym środowisku rozwoju z następującym komunikatem ...Wstępnie zalogować nieszczęść handshake z podłączeniem bezpośrednio do 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.) 

... powszechnie akceptowane mądrość do rozwiązywania tego Problem polega na ustawieniu części połączenia z na True. Jednak nie działa to niezawodnie ani konsekwentnie.

Ten konkretny błąd występuje w wielu przypadkach, na przykład podczas testowania naszej usługi WCF w naszym emulatorze Azure rozmawiającym z instancją SQL Azure na żywo/hostowaną lub nawet przy użyciu SQL Management Studio. Jedynym wspólnym mianownikiem, jaki znaleźliśmy, jest to, że występuje tylko wtedy, gdy łączymy się bezpośrednio z SQL Azure, w przeciwieństwie do tego, gdy hostowany i Azure rozmawia bezpośrednio z SQL Azure (co działa).

Próbowałem już wielu taktyk, aby rozwiązać problem (na przykład jeden szczegółowy here), tj. Sądząc, że był związany z połączeniem i usuwając pulowanie i inne modyfikacje ciągu połączenia. Ale niestety, żadna nie jest rozstrzygająca i bardziej irytująca jest to, że błąd jest przerywany i uniemożliwi dostęp na krótki czas, zanim magicznie się rozwiąże.

Inne czynniki, które wyeliminowałem.

  • Używamy Transcient Application Block, aby spróbować odzyskać z tych błędów, ale nie.
  • Nasze biuro nie ma serwera proxy z naszym połączeniem z usługami hostowanymi w usłudze Azure.

Czy ktoś jeszcze napotkał ten problem lub ma jakieś sugestie?

+0

Hummm ... kilka pomysłów: czy próbowałeś skopiować tę bazę danych do innej? Zastanawiam się, czy są jakieś problemy na serwerze, na którym obecnie się znajdujesz. Czy próbowałeś w innym centrum danych tylko dla kopnięć? Jeśli problem będzie nadal występował, czy może to być sam sterownik? Czy na pewno używasz najnowszych sterowników/najnowszego SSMS? Mówię to, ponieważ kiedy hostujesz na Azure, wydaje się, że działa - więc zastanawiam się, czy to jest problem ze sterownikiem. –

+0

Dzięki za opinię.Pracujemy na systemie z wieloma dzierżawionymi, w istocie działającym z tą samą bazą danych? Czy to może spowodować jakiś szczególny problem? Pobrałem nowego SQL Native Client 11, ale doświadczyłem tego samego problemu. Nie jestem zbyt pewny co do kroków związanych z przenoszeniem Data Center, jego potężnego systemu, więc nie jestem zbyt pewny, jak można to osiągnąć ... – SeanCocteau

+1

Ah - to spory system? Hummm ... Widziałem, w rzadkich przypadkach, specyficzny warunek, który występuje, gdy baza danych SQL jest pod ciężkimi żądaniami logowania. Błąd, który widziałem był jednak błędem logowania; nie jest to dokładnie ten sam problem. Osobiście traktowałbym ten błąd jako przejściowy błąd; powinieneś być w stanie dostosować blok przejściowy i dodać ten konkretny błąd jako błąd przejściowy do ponowienia (domyślnie ten błąd nie jest uważany za przejściowy z natury, więc blok nie uwzględnia go, chyba że mu to powiesz). To może załatwić sprawę. –

Odpowiedz

5

Musisz skanowania dla IFS Winsock BSP lub LSP, która nie jest zgodna z flagą FILE_SKIP_COMPLETION_PORT_ON_SUCCESS, problem wynika głównie z non-IFS LSP instalowany.

Wystarczy uruchomić „netsh WinSock Pokaż katalog” z wiersza poleceń i sprawdzić każdą flagę „usług”, która nie wygląda w formacie 0x20xxx

W moim przypadku okazało się, że „Speed ​​Accelerator "z flagą usługi 0x66, usunięcie tego oprogramowania rozwiązuje mój problem.

Więcej informacji można znaleźć tutaj: http://support.microsoft.com/kb/2568167

1

Jaki ciąg połączenia wyglądać? Nie wiesz, jeśli jeszcze tego nie próbowałem ale Pamiętam, że podobny problem przy użyciu zdalnego połączenia SQL SQL Azure i okazało się, że miałem ustawić:

Trusted_Connection=False;Encrypt=True 

i usunąć Połącz Timeout z łańcucha całkowicie.

+0

Myślałem, że ustawienie nazwy użytkownika i hasła automatycznie to zrobi, ale mogę spróbować ustawić Trusted_Connection i sprawdzić, czy to pomaga. 'SqlConnectionStringBuilder' nie ma wbudowanej tej właściwości, ale FWIW http://msdn.microsoft.com/en-us/library/ee621781.aspx odwołuje się do tej właściwości. Nie ma sensu, aby miało to miejsce tylko * czasami * w oparciu o ciąg połączenia, a błąd spowodowałby, że SQL Azure wysyła zły certyfikat na nieprawidłowy rzut kości, ale możesz być na czymś. Dzieki za sugestie. –

+0

W rzeczywistości wydaje się, że zostało to zastąpione przez właściwość "Zintegrowane zabezpieczenia". Ustawienie "Trusted_Connection" ręcznie na 'SqlConnectionStringBuilder' modyfikuje właściwość" Integrated Security ". Domyślam się, że domyślnie jest to fałsz, ale spróbuję jawnie ustawić i zobaczyć, co się stanie. Dla odniesienia http://stackoverflow.com/questions/3077412/what-is-the-difference-between-trusted-connection-andintegrated-security-in-a- –

+0

Bez kości. Problem wciąż występuje sporadycznie. –