Podczas próby otwarcia połączenia DB z poziomu aplikacji C# widzę następujący błąd. Zdaję sobie sprawę, że ten błąd prawdopodobnie pojawił się już na 100 pytaniach. Jednak w tym scenariuszu błąd pojawia się tylko na działającym na na moim konkretnym komputerze stacjonarnym. Przeszukałem internet przez Google i na tej stronie, ale nie mogę znaleźć rozwiązania.SqlConnection utknął na nazwanych potokach
BŁĄD:
„Wystąpił błąd związanych z siecią lub specyficzne dla instancji podczas ustanawiania połączenia do serwera SQL Serwer nie został znaleziony lub nie był dostępny Sprawdź, czy nazwa instancji jest poprawny i że SQL Server.. jest skonfigurowany do umożliwienia połączeń zdalnych. (dostawca: Named Pipes Provider, błąd: 40 - nie można otworzyć połączenia do serwera SQL)”
DLACZEGO Ten scenariusz jest wyjątkowy:
jestem w stanie połączyć się z SQL serwer od Studio zarządzania serwerem SQL (SSMS). Ta aplikacja działa na innym komputerze i jest w stanie nawiązać stamtąd połączenie z serwerem SQL. Tak więc ten scenariusz błędu dotyczy aplikacji C# działających na moim komputerze stacjonarnym. Działają inne aplikacje (SSMS). Inne prace na komputerze.
Kiedy "powącham przewód" za pomocą WireSharka, ślad pokazuje mi, że moja aplikacja próbuje się połączyć przez NamedPipes (tj. \ Server \ IPC $). Nie mogę zmusić go do korzystania z protokołu TCP/IP.
Czego próbowałem:
- Re-installed.NET ramowa
- Re zainstalowane Visual Studio (C# - Express wersja 2010)
- utworzony alias w Cliconfg.exe.
Czy jest coś, co przeoczyłem?
Oto parametry połączeń próbowałem ...
Data Source=<servername>;Initial Catalog=HIE;Integrated Security=true
Server=tcp:10.240.11.81;Integrated Security=SSPI; database=HIE
Data Source=10.240.11.81,1433;Network Library=DBMSSOCN;Initial Catalog=HIE;User ID=<SqlUserIdThatISetUpAsSysAdmin>;Password=<password>
Oto fragment kodu:
_conn = new SqlConnection(); // _conn declared globally
_conn.ConnectionString = <the connection string above>;
_conn.Open();
Umieść 'tcp:' również dla 'źródła danych'. Twardy kod ciąg połączenia do kodu źródłowego C#. Twoje debugowanie Wireshark było bardzo dobre, ponieważ pokazuje, że nie używa Tcp. – usr
Dzięki za szybką odpowiedź @usr. Człowieku .. jesteście SZYBKO! Próbowałem "Data Source = TCP:; Initial Catalog = HIE; Integrated Security = True" i "Data Source = TCP: 10.240.11.81; Initial Catalog = HIE; Integrated Security = True" i otrzymałem nowe wiadomości: (provider: TCP Dostawca, błąd: 0 - Wystąpił nieodwracalny błąd podczas wyszukiwania bazy danych.) Oraz (dostawca: Dostawca TCP, błąd: 0 - Podano nieprawidłowy argument.) Google nie udzielił mi żadnych informacji o tych komunikatach o błędach. Baza danych "HIE" istnieje na serwerze. –
To jest szalone. Błąd wskazuje na bardzo dziwne warunki według Google. Czy możesz telnetować serwer SQL przy użyciu tego adresu IP i portu 1433? Czy aplikacja działa jako administrator? Wyłącz UAC lub uruchom podwyższone, proszę. Uruchom ponownie Wireshark. Co to oznacza? – usr