Dlaczego pojawia się komunikat „Nie można połączyć się z serwerem - błąd związany z siecią lub instancją”?


378

Podczas próby połączenia z programem SQL Server pojawia się następujący błąd:

Nie można połączyć się z 108.163.224.173.

Wystąpił błąd związany z siecią lub specyficzny dla wystąpienia podczas ustanawiania połączenia z programem SQL Server.

Serwer nie został znaleziony lub był niedostępny. Sprawdź, czy nazwa instancji jest poprawna i czy SQL Server jest skonfigurowany do zezwalania na połączenia zdalne.

(dostawca: Dostawca nazwanych potoków, błąd: 40 - Nie można otworzyć połączenia z programem SQL Server) (Microsoft SQL Server, błąd: 1326)

Ten błąd jest zgłaszany, gdy próbuję skonfigurować moją bazę danych do gridview w Visual Studio 2010. Brakuje mi sposobu na debugowanie tego błędu.

Jak debugujesz ten błąd? Jakie kroki powinienem podjąć, aby ustalić, co naprawdę tu się dzieje, oprócz tego, o którym mowa w komunikacie o błędzie?


11
Ping jest niewiarygodny w testowaniu łączności z SQL Server, żądanie echa ICMP jest domyślnie wyłączone w Windows Server. Nieprawidłowa nazwa użytkownika lub hasło wcale nie są tym, co mówi ci błąd, to zupełnie inny błąd.
Sean Airey,

1
Wypróbuj ten artykuł, zawiera on prawie wszystkie kroki potrzebne do rozwiązania problemów z łącznością: social.technet.microsoft.com/wiki/contents/articles/…
Sean Airey

3
Zobacz moją odpowiedź tutaj z moim zrzutem ekranu, jeśli ten błąd wystąpił w programie SQL Server {wersja} Express, gdy konfigurujesz go po raz pierwszy. Wróciłem do StackOverflow i ponownie użyłem mojej odpowiedzi, ponieważ tylko ona zadziałała. stackoverflow.com/questions/1391503/…
MacGyver

Ten problem występował na moim serwerze wirtualnym, gdy chciałem połączyć się z hostem lokalnym. Okazało się, że wystąpił jakiś błąd podczas uruchamiania systemu operacyjnego - w moim przypadku wszystko zostało rozwiązane na szczęście po czystym ponownym uruchomieniu.
Qohelet,

Dzisiaj spędziłem na tym dużo czasu, w końcu to, co zadziałało: Open Sql Server Configuration Manager -> Protokoły dla <INSTANCE> -> TCP / IP -> Adresy IP (Tab) . Przejdź do ostatniego wpisu IP Wszystkie i podaj port TCP 1433 . Teraz uruchom ponownie SQL Server (INSTANCE) za pomocą services.msc . Po tym problem został rozwiązany.
ani627,

Odpowiedzi:


301

Pomocne okazały się następujące techniki:

  1. Upewnij się, że aparat bazy danych jest skonfigurowany do akceptowania połączeń zdalnych :

    • Start> Wszystkie programy> SQL Server 2005> Narzędzia konfiguracyjne> Konfiguracja obszaru SQL Server
    • Kliknij Konfiguracja obszaru dla usług i połączeń
    • Wybierz wystąpienie, które ma problem> Aparat baz danych> Połączenia zdalne
    • Włącz połączenia lokalne i zdalne
    • Uruchom ponownie instancję
  2. Może być konieczne utworzenie wyjątku w zaporze dla instancji SQL Server i używanego portu:

    • Start> Uruchom> Firewall.cpl
    • Kliknij kartę wyjątków
    • Dodaj plik sqlservr.exe (zwykle znajduje się w C:\Program Files (x86)\Microsoft SQL Server\MSSQL.x\MSSQL\Bin, sprawdź, czy instalacje mają aktualną ścieżkę do folderu) i port (domyślnie jest 1433)
    • Sprawdź również parametry połączenia
  3. Sprawdź, czy Twoje usługi serwera SQL działają poprawnie:

    • Przejdź do Wszystkie programy> Microsoft SQL Server 2008> Narzędzia konfiguracyjne> SQL Server Menedżer konfiguracji> Usługi SQL Server
    • Sprawdź, czy status usługi SQL Server jest uruchomiony.

    Ponadto upewnij się, że Twój zdalny serwer jest w tej samej sieci . Uruchom, sqlcmd -Laby sprawdzić, czy Twój serwer znajduje się na liście sieci.

  4. Włącz protokół TCP / IP w konfiguracji serwera SQL

    Gdy dwa lub więcej serwerów SQL jest połączonych przez sieć, cała komunikacja odbywa się za pomocą TCP / IP. Domyślny port instalacji programu SQL Server to 1433. Ten port można zmienić za pomocą programu SQL Server Configuration Manager. Należy włączyć protokół TCP / IP, aby połączyć się z programem SQL Server.

    • Przejdź do Wszystkie programy >> Microsoft SQL Server 2008 >> Narzędzia konfiguracyjne >> SQL Server Menedżer konfiguracji >> Wybierz TCP / IP
    • Kliknij prawym przyciskiem myszy na TCP / IP >> Kliknij na Włącz

    Należy ponownie uruchomić usługi SQL Server, aby wszystkie zmiany zostały wprowadzone. Kliknij prawym przyciskiem myszy i przejdź do właściwości menu, aby wybrać lokalizację, w której można zmienić domyślny port programu SQL Server.


10
Włączenie protokołu TCP / IP w konfiguracji SQL Server było dla mnie rozwiązaniem przy korzystaniu z SQL Server 2014 Express.
Mike Richards

73
Dzisiaj spędziłem na tym dużo czasu, w końcu to, co zadziałało: Open Sql Server Configuration Manager -> Protokoły dla <INSTANCE> -> TCP / IP -> Adresy IP (Tab) . Przejdź do ostatniego wpisu IP Wszystkie i wspomnij o porcie TCP 1433 . Teraz uruchom ponownie SQL Server (<INSTANCE>) za pomocą services.msc . Następnie problem został rozwiązany!
ani627,

1
Miałem również do czynienia ze szczególnym problemem na moim lokalnym serwerze Sql i rozwiązałem go, sprawdzając lokalne usługi systemu operacyjnego, i szukałem konkretnych usług Sql i uruchamiam je jeden po drugim. Działa idealnie.
Faisal Naseer,

4
Ja również miałem ten sam problem, zalogowałem się do serwera SQL i stwierdziłem, że usługa mssqlserer została zatrzymana, uruchomiłem ją. Był w stanie połączyć się teraz z instancją
Rak

15
PAMIĘTAJ także o ENABLE SQL Server Browserserwisie.
Skonfigurowałem

125

Mam rozwiązanie dla mnie:

Otwórz „SQL Server Configuration Manager”

Teraz kliknij „SQL Server Network Configuration” i „Protocols for Name

Kliknij prawym przyciskiem myszy na „TCP / IP” (upewnij się, że jest włączony). Kliknij Właściwości

Teraz wybierz kartę „Adresy IP” i przejdź do ostatniego wpisu „Wszystkie IP”

Wpisz „Port TCP” 1433.

Teraz uruchom ponownie „SQL Server .Name”. using „services.msc” (winKey + r)

To będzie działać...


Próbuję tego, ale z jakiegoś powodu, kiedy klikam prawym przyciskiem myszy i wybieram „Właściwości” w „TCP / IP” w Windows10, nie wyświetla się w tym celu okno dialogowe. Pozostałe węzły ogólnie w widoku drzewa dobrze wyskakują w oknach dialogowych. Czy ktoś ma ten problem i pomysły na jego rozwiązanie?
Ryan Betker - healthNCode

3
W SQL Server 2014 użyj (localdb) \ mssqllocaldb zamiast (localdb) \ v11.0
Shalva Avanashvili

67
Kopiuj wkleił mój komentarz (który został opublikowany 24 lutego 2015 r. - 7 miesięcy przed Twoim postem) jako odpowiedź bez przyznania mi punktów! : P
ani627,

2
To zadziałało. Nie mogłem połączyć się z SQL Server 2016. Dokonałem tych zmian i zadziałało! Dzięki.
Ankur

1
mi to pasuje. po prostu musiałem uruchomić usługi w „service.msc” po włączeniu TCP / IP i nazwanych potoków w menedżerze konfiguracji.
Alif Noushad,

100

Dodanie mojego mocno ocenionego komentarza jako odpowiedzi do zrzutów ekranu.

Spędziłem nad tym dużo czasu, w końcu to, co zadziałało, to:

1) Otwórz Menedżera konfiguracji serwera SQL -> Konfiguracja sieciowa SQL Server -> Protokoły dla <(INSTANCJA)> -> TCP / IP (kliknij dwukrotnie).

wprowadź opis zdjęcia tutaj

2) Wybierz -> Adresy IP (Tab) .

3) Przejdź do ostatniego wpisu IP Wszystkie i podaj port TCP 1433 .

wprowadź opis zdjęcia tutaj

4) Naciśnij Win+Ri wprowadź services.msc .

5) Teraz uruchom ponownie SQL Server <(INSTANCE)> .

wprowadź opis zdjęcia tutaj

Następnie problem został rozwiązany!



Pracowałem dla mnie, SQL Express 2012
lost_in_magento

Pracowałem dla mnie na serwerze SQL 2012 po włączeniu TCP, dodałem numer portu 1433 do TCP ALL i zrestartowałem usługę!
Chirag Khatsuriya,

Dla mnie dodatkowo musiałem zezwolić na TCP 1433 i UDP 1434 w zaporze
MarkusEgle

83

Rozwiązuję ten problem, otwierając Usługi, a następnie uruchamiając usługę Sql Server (Sqlexpress) .

obraz usługi


3
Widziałem, gdzie usługa Windows Server SQL została ustawiona na Typ uruchamiania ręcznego, więc nie uruchomiła się ponownie przy ponownym uruchomieniu. Powinien być ustawiony na Automatyczny.
robertburke,

2
Właśnie to zrobiłem, mój status działał, a StartupType był automatyczny, ale nadal napotykałem problem, więc użyłem usług z typu okna Uruchom, services.msca następnie kliknąłem prawym przyciskiem myszy SQL Server (SQL EXPRESS) dla menu kontekstowego i po prostu zatrzymałem i uruchomiłem obsługa ponownie i działa dobrze dla mnie, nadzieja pomaga.
shaijut

22

Ten błąd pojawił się głównie po zatrzymaniu usługi SQL. Musisz ponownie uruchomić usługę. Aby przejść do tego okna, musisz przeszukać usługi w następujący sposób: wprowadź opis zdjęcia tutaj

Następnie wyszukaj SQLSERVER (MSSQLSERVER) i uruchom ponownie usługę.

wprowadź opis zdjęcia tutaj

Mam nadzieję, że to zadziała.


18

Naciśnij window + R (Run window Open)i w oknie typu uruchom "services.msc"i nowe usługi otwórz znajdź SERWER SQL z nazwą instancji w moim przypadku, SQL SERVER(SQLEXPRESS)to uruchom tę usługę i spróbuj ponownie, działa dla mnie Mam nadzieję, że to działa również dla Ciebie.wprowadź opis zdjęcia tutaj


Odpowiedź została udzielona wcześniej. Nie otrzymuj powodu, aby opublikować to ponownie
Anik Saha

8
kolego, mam ten sam problem, ale nie znam okna otwartych usług, potem znalazłem sposób i pomyślałem, że podzielę się z ludźmi
Hafiz Asad

Dzięki, @HafizAsad. Twoja odpowiedź działa dla mnie.
Adnan Ahmad

@AdnanAhmad nie ma za co. Dziękuję za uznanie.
Hafiz Asad

16

W przypadku korzystania z wersji Express Edition :

Dodaj "\SQLEXPRESS"po nazwie serwera

na przykład "MY-SERVER\SQLEXPRESS"

wprowadź opis zdjęcia tutaj


13

Miałem ten sam błąd, gdy chciałem uruchomić mój projekt WinForms (obejmujący pracę z bazą danych SQL Server i działający idealnie na moim komputerze) na innym komputerze. Problem dotyczył Zapory systemu Windows na moim komputerze. Rozwiązałem to, dodając dwie zasady. Oto cała procedura, jak zezwolić SQL Serverowi za pośrednictwem Zapory systemu Windows:

  1. Otwórz „Uruchom” i wejdź services.msc
  2. Znajdź usługę dla SQL Server (nazwa instancji) i SQL Server Browser. Pojedynczo kliknij prawym przyciskiem myszy, wybierz „Właściwości”, skopiuj ścieżkę do pliku exe
  3. Następnie otwórz firewall.cpl, kliknij zezwól na aplikację lub dodaj regułę, dodaj poprzednio skopiowaną ścieżkę (musisz wykonać procedurę), zaznacz Domena i Prywatny, odznacz Publiczny.

To jest link do YouTube, gdzie można zobaczyć tę procedurę: Zezwól na SQL Server przez Zaporę systemu Windows


Działa dla mnie idealnie. Ważne: dodaj przeglądarkę i serwer do zapory! +1
BendEg

Trudno mi było znaleźć plik sqlservr.exe, co pomogło w jego zlokalizowaniu.
Stan

11

Jeśli żadne z powyższych rozwiązań nie działa (dla mnie nic nie działało), po prostu ponownie uruchom komputer i będziesz mógł połączyć się z serwerem SQL (localhost).


Powodem, dla którego to zadziała, jest to spowodowane tym, że właśnie zainstalowałeś Sql Server i nie uruchomiłeś ponownie komputera zgodnie z instrukcją instalacji. Zrób to, a następnie zostaną utworzone usługi i brak niezbędnej konfiguracji.
Sterling Diaz 30.04.16

10

Po wykonaniu wszystkich czynności wymienionych tutaj:
http://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a- connection-to-sql-server-microsoft-sql-server-error / Nadal nie działał dla mnie.

Kroki zadziałały dla mnie:

Start > Run > cmd > sqlcmd -L

Pojawi się monit o nazwę serwera. Upewnij się, że nazwa tego serwera jest taka sama, jak ta, z którą próbujesz się połączyć w polu CONNECT TO SERVER w studiu zarządzania SQL.

Popełniłem ten głupi błąd, którego ciągle używam MSSQLSERVER raczej przy użyciu nazwy serwera.

Mam nadzieję, że to pomaga ludziom, którzy popełniają głupie pomyłki, takie jak ja.

Dzięki.


7

Używam SQL Server 2016 i Windows 10.

wprowadź opis zdjęcia tutaj

Pierwszą rzeczą jest umożliwienie zdalnego połączenia z SQL Server. To, co zrobiłem, to wpisz polecenie sqlservermanager13.msc w menu Start, aby otworzyć Menedżera konfiguracji programu SQL Server. Upewnij się, że status TCP / IP jest włączony. wprowadź opis zdjęcia tutaj

Sprawdź numer portu TCP, klikając dwukrotnie nazwę protokołu TCP / IP. Zwykle jest to domyślnie 1433.

wprowadź opis zdjęcia tutaj

Poniższe procedury konfigurują Zaporę systemu Windows przy użyciu Zapory systemu Windows z przystawką Advanced Security Microsoft Management Console (MMC). Zapora systemu Windows z zabezpieczeniami zaawansowanymi konfiguruje tylko bieżący profil.

Aby otworzyć port w zaporze systemu Windows dla dostępu TCP

  1. W menu Start kliknij polecenie Uruchom, wpisz WF.msc, a następnie kliknij przycisk OK.
  2. W Zaporze systemu Windows z zabezpieczeniami zaawansowanymi w lewym okienku kliknij prawym przyciskiem myszy Reguły ruchu przychodzącego, a następnie kliknij opcję Nowa reguła w okienku akcji.
  3. W oknie dialogowym Typ reguły wybierz opcję Port, a następnie kliknij przycisk Dalej.
  4. W oknie dialogowym Protokół i porty wybierz TCP. Wybierz Określone porty lokalne, a następnie wpisz numer portu wystąpienia aparatu bazy danych, na przykład 1433 dla wystąpienia domyślnego. Kliknij Następny.
  5. W oknie dialogowym Akcja wybierz Zezwalaj na połączenie, a następnie kliknij przycisk Dalej.
  6. W oknie dialogowym Profil wybierz dowolne profile opisujące środowisko połączenia z komputerem, gdy chcesz połączyć się z aparatem bazy danych, a następnie kliknij przycisk Dalej.
  7. W oknie dialogowym Nazwa wpisz nazwę i opis tej reguły, a następnie kliknij przycisk Zakończ.

Kolejna rzecz do skonfigurowania.

Aby otworzyć dostęp do programu SQL Server podczas korzystania z portów dynamicznych

  1. W menu Start kliknij polecenie Uruchom, wpisz WF.msc, a następnie kliknij przycisk OK.
  2. W Zaporze systemu Windows z zabezpieczeniami zaawansowanymi w lewym okienku kliknij prawym przyciskiem myszy Reguły ruchu przychodzącego, a następnie kliknij opcję Nowa reguła w okienku akcji.
  3. W oknie dialogowym Typ reguły wybierz Program, a następnie kliknij Dalej.
  4. W oknie dialogowym Program wybierz opcję Ta ścieżka programu. Kliknij Przeglądaj i przejdź do wystąpienia programu SQL Server, do którego chcesz uzyskać dostęp za pośrednictwem zapory, a następnie kliknij Otwórz. Domyślnie SQL Server znajduje się w C: \ Program Files \ Microsoft SQL Server \ MSSQL13.MSSQLSERVER \ MSSQL \ Binn \ Sqlservr.exe. Kliknij Następny.
  5. W oknie dialogowym Akcja wybierz Zezwalaj na połączenie, a następnie kliknij przycisk Dalej.
  6. W oknie dialogowym Profil wybierz dowolne profile opisujące środowisko połączenia z komputerem, gdy chcesz połączyć się z aparatem bazy danych, a następnie kliknij przycisk Dalej.
  7. W oknie dialogowym Nazwa wpisz nazwę i opis tej reguły, a następnie kliknij przycisk Zakończ.

Spójrz na doucmentation firmy Microsoft Skonfiguruj Zaporę systemu Windows dla dostępu do aparatu bazy danych


Na moim komputerze z systemem Windows 10 wystąpienie serwera SQL znajduje się w C: \ Program Files \ Microsoft SQL Server \ MSSQL13.SQLEXPRESS \ MSSQL \ Binn \ Sqlservr.exe
Mayer Spitzer

7

Możesz przetestować następujące metody.

  • za

    1. Sprawdź parametry połączenia projektu.
  • b

    1. Przejdź do usług i uruchom ponownie Wystąpienie SQLServer.
  • do

    1. Otwórz „SQLServer Configuration Manager”
    2. W lewym panelu wybierz „Konfiguracja sieci SQLServer” i rozwiń ją
    3. Wybierz „Protokoły dla MSSQLServer”
    4. W prawym panelu kliknij na „TCP / IP”
    5. W zakładce „Protokół” ustaw „Włączone” na „Tak”
    6. Na karcie „Adresy IP” przewiń w dół
    7. W „IPAll” ustaw „Port TCP” na 1433
  • re
    1. Otwórz „Firewall z zaawansowanymi zabezpieczeniami”
    2. W prawej zakładce wybierz „Reguły przychodzące”

W środkowej zakładce znajdź rekord, że „port lokalny” to 1433. Jeśli nie możesz go znaleźć, spróbuj utworzyć go z następującymi poziomami

  • W menu Start kliknij polecenie Uruchom, wpisz „WF.msc”, a następnie kliknij przycisk OK
  • W lewym panelu kliknij „Zapora systemu Windows z zaawansowanymi zabezpieczeniami”
  • W prawym panelu kliknij prawym przyciskiem myszy „Reguły ruchu przychodzącego”, a następnie kliknij „Nowa reguła”
  • W oknie dialogowym Typ reguły wybierz opcję „Port”, a następnie kliknij przycisk Dalej
  • W oknie dialogowym Protokół i porty wybierz opcję „TCP”, a następnie „Określone porty lokalne”, a następnie wpisz numer portu 1433, kliknij przycisk Dalej
  • W oknie dialogowym Akcja wybierz Zezwalaj na połączenie, a następnie kliknij przycisk Dalej
  • W oknie dialogowym „Profil” zaznacz pole Domena, Prywatny i Publiczny, a następnie kliknij Dalej
  • W oknie dialogowym „Nazwa” wpisz „SQL 1433 Port”, a dla opisu wpisz opis dla własnego. Następnie kliknij przycisk Zakończ
  1. Następnie na środkowej karcie kliknij dwukrotnie znaleziony element (Instancję) lub utworzony element o nazwie „SQL 1433 Port”.
  2. Wybierz zakładkę „Zakres” w otwartym oknie dialogowym (SQL Server Właściwości)
  3. Na komputerze lokalnym Wejdź na google.com w przeglądarce i wyszukaj „Moje IP”.
  4. następnie skopiuj swoje „IP”
  5. Przejdź do zdalnego serwera i w oknie dialogowym „Właściwości SQL Server” zakładki „Zakres”, w „Zdalnym adresie IP” wybierz opcję „Te adresy IP” i kliknij przycisk „Dodaj”
  6. W otwartym oknie dialogowym (adres IP) wybierz opcję „Ten adres IP lub podsieć” i wklej swój „IP”, kliknij przycisk OK.

7

To rozwiązanie rozwiązuje zarówno błąd sieci, jak i obsługę serwera SQL

Odpowiedziałem tutaj na podobne pytanie, musisz ustalić inne open Run type-> services.msc- w ramach usług -> sort by stoppedzobaczysz kilka zatrzymanych usług SQLRight click and start

Na początek - występują 4 problemy, które mogą powodować typowe błędy łączności z serwerem LocalDb SqlExpress Sql SQL Network Interfaces, error: 50 - Local Database Runtime error occurred , zanim zaczniesz, musisz zmienić nazwę v11 lub v12 na (localdb) \ mssqllocaldb

Odkryłem, że najprostsze jest wykonanie poniższych czynności - załączyłem zdjęcia i instrukcje dotyczące pomocy.

Najpierw sprawdź, którą instancję zainstalowałeś, możesz to zrobić, sprawdzając rejestr i uruchamiając cmd

  1. cmd> Sqllocaldb.exe i
  2. cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore" jeśli ten krok nie powiedzie się, możesz usunąć za pomocą opcji dcmd> Sqllocaldb.exe d „someDb”
  3. cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
  4. cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"

SqlLOCALDb_edited.png


5

Wystąpił ten sam problem i problem polegał na tym, że wykonałem kilka projektów w rozwiązaniu ( Webi Droid) i mimo że Default projectzostał wybrany w Package Manager Consolenim, użyłem ciągu połączenia z Droidprojektu:

PM> update-database -Verbose
Using StartUp project 'Droid'. <-- DROID
Using NuGet project 'Web'. <-- WEB
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
<!-- BAD TARGET DATABASE -->
Target database is: 'DefaultConnection' (DataSource: .\SQLEXPRESS, Provider: System.Data.SqlClient, Origin: Convention).
System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
   [REMOVED TEXT]
ClientConnectionId:00000000-0000-0000-0000-000000000000
Error Number:-1,State:0,Class:20
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Po ustawieniu Startup Projectsię Webi Default Projectw Package Manger ConsoleDostałem go do pracy.


5

Muszę uruchomić usługę przeglądarki SQL Server w programie SQL Server Configuration Manager . Bez tego instalacja nie może odkryć nowo utworzonej usługi.


1
Jeszcze mnie tam nie ma, ale zbliżam się. W Visual Studio po wykonaniu tej czynności również rozłączam i ponownie się łączę, wciąż otrzymując ten sam błąd, ale teraz przynajmniej od tyłu VS2015 nie mogę tworzyć tabel i baz danych i tworzę szew do uruchomienia teraz. (ea, nie ma nad nimi ikony ciemnego krzyża)
user3800527,

1
uwaga po komendzie, w wyniku czego nazwa serwera na komputerze lokalnym Start> Uruchom> cmd> sqlcmd -L
user3800527

4

Chociaż powyższe rozwiązania powinny działać w 90% przypadków, ale jeśli nadal czytasz tę odpowiedź !!! Prawdopodobnie próbujesz połączyć się z innym serwerem niż zamierzony. Może to być spowodowane tym, że plik konfiguracyjny wskazuje inny serwer SQL niż serwer, z którym próbujesz się połączyć.

Zdarzyło mi się przynajmniej.


1
Zdarzyło mi się również. Powinien był to sprawdzić przed sprawdzeniem próby zdiagnozowania zapory. Miałem odpowiedni ciąg połączenia, ale uruchomiłem niewłaściwy projekt w rozwiązaniu ...
VSO

4

Przeniosłem się z laptopa roboczego w systemie Windows 7 do laptopa roboczego w systemie Windows 10. Z powodzeniem korzystałem z SSMS2016 w systemie Windows 7.

Ten sam problem zastosowano przy użyciu SSMS2012 lub SSMS2016. Mój dostęp do 10 serwerów SQL za pomocą uwierzytelniania systemu Windows był nadal taki sam. Mogę to przetestować z innego serwera. Jednak 2 z 10 serwerów nie łączyłyby się z moim laptopem . Oba były MS SQL Server 9, ale mogłem połączyć się z innymi bazami danych SQL Server 9.

Rozwiązaniem było dodanie reguły zapory (za pomocą Zapory systemu Windows z zaawansowanymi zabezpieczeniami).

Utwórz regułę przychodzącą dla każdego SSMS, np. C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ Tools \ Binn \ ManagementStudio \ Ssms.exe

Nie jestem ekspertem od sieci, więc nie podałem szczegółów, ale mam nadzieję, że wskaże ci właściwy kierunek.


Błąd msg (reguła sprzed zapory) „Podczas nawiązywania połączenia z programem SQL Server wystąpił błąd sieciowy lub specyficzny dla instancji. Serwer nie został znaleziony lub był niedostępny. Sprawdź, czy nazwa instancji jest poprawna i czy program SQL Server jest skonfigurowany do zezwalaj na połączenia zdalne. (dostawca: Interfejsy sieciowe SQL, błąd: 26 - Błąd podczas lokalizowania serwera / wystąpienia) (dostawca danych .Net SqlClient Data) ”


4

Dlaczego ten błąd jest tak nudny i hałaśliwy, tylko dlatego, że może wystąpić w różnych sytuacjach.

Zrobiłem tutaj wszystkie approchs i wciąż jestem do bani. Upewnij się więc, że zrobiłeś to samo co ja przed przeglądaniem w dół.

Może nie jestem w stanie natychmiast naprawić twojej sytuacji, ale mogę wskazać kierunek lub myśleć o Tobie (Ten, który w końcu ześlizguje się tutaj). Zacząłem zastanawiać się nad błędem mojego programu występującego po tym, jak upewniłem się, że nazwa instancji jest wyraźnie poprawna i ustawiłem moją bazę danych, aby zezwoliła na zdalne sterowanie zgodnie z powyższymi metodami. Po tym podejrzewałem , że coś złego dzieje się w moim fragmencie kodu połączenia SQL.

Rozwiązanie mojego problemu:

  • Sprawdź moją funkcję sqlconnection

  • Kliknij, aby zobaczyć jego konfigurację

  • Nowe połączenie

wprowadź opis zdjęcia tutaj

  • Wybierz nazwę swojego serwera

wprowadź opis zdjęcia tutaj

Pomaga mi zastanowienie się, co dokładnie dzieje się w procesie połączenia. Mam nadzieję, że moje myślenie doprowadzi cię do zabicia twojego błędu.


Pomogło mi to ustalić, że muszę USUNĄĆ numer portu dla ciągu połączenia LocalDB podczas korzystania z Entity Framework.
ryanwebjackson

4

Wypróbowałem wszystkie pozostałe odpowiedzi na to pytanie i niektóre, jeśli nie wszystkie, prawdopodobnie przyczyniły się do tego, że zadziałało to dla mnie, ale nadal nie mogłem połączyć się zdalnie z DB. Korzystałem z programu SQL Server na maszynie Wirtualnej platformy Azure.

W końcu przypomniałem sobie, że maszyna wirtualna ma punkty końcowe, które są kontrolowane przez serwer proxy konta Azure, więc przeszedłem do portalu Azure i dodałem 1433 jako dostępny punkt końcowy i mogłem połączyć się z moją instancją SQL.

Mam nadzieję, że to pomoże komuś, kto wypróbował wszystkie pozostałe odpowiedzi i nadal nie ma szczęścia!


4

Podsumowanie

Aby rozwiązać ten problem napotkany podczas uruchamiania aplikacji lokalnej w porównaniu ze zdalną bazą danych , użyj programu SQL Server Configuration Manager, aby dodać alias do zdalnej bazy danych.

Detale

Ostatnio napotkałem ten problem podczas przejścia z systemu Windows 7 na laptopa z systemem Windows 10. Uruchomiłem lokalne środowisko programistyczne i wykonawcze uzyskujące dostęp do naszej bazy danych Dev na zdalnym serwerze. Dostęp do bazy danych Dev uzyskujemy poprzez ustawienie aliasu serwera za pomocą SQL Server Client Network Utility (cliconfg.exe). Po potwierdzeniu, że alias został poprawnie skonfigurowany zarówno w 64-bitowej, jak i 32-bitowej wersji narzędzia oraz że serwer bazy danych był dostępny z nowego laptopa za pośrednictwem SSMS, nadal dostrzegłem błąd OP (nie adres IP PO, z kierunek).

Konieczne było użycie SQL Server Configuration Manager, aby dodać alias dla zdalnego serwera bazy danych Dev. Naprawiono błędy od razu.

wprowadź opis zdjęcia tutaj


4

Możesz sprawdzić status usługi MS SQL Server 2014. W Windows 7 możesz to zrobić przez:

  1. Przejdź do wyszukiwania i wpisz „SQL Server 2014 Configuration Manager
  2. Następnie kliknij „SQL Server Service” w lewym menu
  3. Sprawdź wystąpienie usługi SQL Server, jeśli jest zatrzymana lub uruchomiona
  4. Jeśli się zatrzymał, zmień status na uruchomiony i zaloguj się do SQL Server Management Studio 2014

3

Mój problem zaczął się, gdy próbowałem zmienić serwer z IIS Express na lokalny IIS (podczas używania LocalDB ).

wprowadź opis zdjęcia tutaj

Korzystałem z LocalDB (do celów deweloperskich), a kiedy przeszedłem do powrotu z lokalnego IIS do IIS Express, Visual Studio zmieniło moje źródło danych z Data Source = (LocalDb) \ MSSQLLocalDB na Data Source =. \ SQLEXPRESS

Niepoprawny ciąg połączenia

<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />

Prawidłowy ciąg połączenia

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True" providerName="System.Data.SqlClient" />

Mam nadzieję, że to pomoże komuś tam.


Nie popełniaj też głupiego błędu przy użyciu / zamiast \ w ciągu połączenia.
andrew pate

3

Oprócz wypróbowania wszystkiego, co sugeruje Teo Chuen Wei Bryan, upewnij się, że odwołujesz się również do poprawnej nazwy serwera / instancji w ciągu połączenia.

Jeśli używasz krótkiej formy nazwy hosta / wystąpienia na serwerze bazy danych lub w pliku web.config, upewnij się, że używasz w pełni kwalifikowanej nazwy domeny (FQDN) / wystąpienia

Ponadto, aby przetestować łączność z serwera, na którym klient SQL Server NIE jest obecny,

-> utwórz plik tekstowy i zmień jego rozszerzenie na .udl

-> Kliknij plik prawym przyciskiem myszy i zobaczysz kartę połączenia.

-> Wprowadź nazwę serwera i zaloguj się, aby przetestować połączenie z serwerem bazy danych.

Mam nadzieję że to pomoże.


3

Jeśli nagle napotkasz ten błąd, powiedz w środowisku produkcyjnym i nic się nie zmieniło, wypróbuj następujące 4 elementy w poniższej kolejności, aby sprawdzić, czy problem zostanie naprawiony.

  1. zrestartuj usługę serwera SQL.
  2. zrestartuj usługę (powiedzmy IIS), która dzwoni na serwer SQL. (problem prawdopodobnie występuje tutaj, jeśli czas między rozpoczęciem połączenia serwisowego do serwera SQL a czasem, w którym pojawia się błąd odpowiedzi, jest bardzo krótki (około jednej lub dwóch sekund).
  3. zrestartuj serwer Serwer SQL jest włączony.
  4. zrestartuj serwer, na którym działa usługa połączeń.

3

Kiedy wystąpił ten błąd w programie Visual Studio,

„Wystąpił błąd związany z siecią lub specyficzny dla instancji podczas nawiązywania połączenia z programem SQL Server. Serwer nie został znaleziony lub był niedostępny. Sprawdź, czy nazwa instancji jest poprawna i czy SQL Server jest skonfigurowany do zezwalania na połączenia zdalne. (dostawca: dostawca nazwanych potoków, błąd: 40 - Nie można otworzyć połączenia z programem SQL Server) ”

... to było podczas wykonywania następującego kodu C #, który próbował uzyskać moje dane programu SQL Server, aby wyświetlić je w siatce. Przerwanie nastąpiło dokładnie w wierszu z komunikatem connect.Open ():

        using (var connect = Connections.mySqlConnection)
        {
            const string query = "SELECT Name, Birthdate, Narrative FROM Friends";
            using (var command = new SqlCommand(query, connect))
            {
                connect.Open();
                using (var dr = command.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        // blah
                    }
                }
            }
        }

Było to niewytłumaczalne, ponieważ zapytanie SQL było bardzo proste, miałem odpowiedni ciąg połączenia, a serwer bazy danych był dostępny. Postanowiłem ręcznie uruchomić rzeczywiste zapytanie SQL w SQL Management Studio, które zadziałało dobrze i przyniosło kilka rekordów. Ale jedna rzecz wyróżniała się w wynikach zapytania: w polu typu varchar (max) w tabeli Znajomi znajdował się niepoprawnie zakodowany tekst HTML (konkretnie niektóre zakodowane symbole komentarza tego rodzaju <!--umieszczone w danych kolumny „Narracja”). Podejrzany wiersz danych wyglądał następująco:

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    &lt;!--HTML Comment -->Once upon a time...

Zwróć uwagę na zakodowany symbol HTML „ &lt;”, który oznaczał znak „<”. Jakoś to dostało się do bazy danych i mój kod C # nie mógł go odebrać! Nie powiodło się za każdym razem bezpośrednio na linii connect.Open ()! Po tym, jak ręcznie zredagowałem ten wiersz danych w tabeli bazy danych Znajomi i wstawiłem zamiast tego zdekodowany znak „<”, wszystko działało! Oto jak powinien wyglądać ten wiersz:

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    <!--HTML Comment -->Once upon a time...

Zedytowałem jeden zły wiersz, który miałem, używając poniższej prostej instrukcji UPDATE. Ale jeśli masz kilka obrażających wierszy zakodowanego HTML, możesz potrzebować bardziej rozbudowanej instrukcji UPDATE, która korzysta z funkcji REPLACE:

UPDATE Friends SET Narrative = '<!--HTML Comment -->Once upon a time...' WHERE Narrative LIKE '&lt%'

Morał tej historii jest (przynajmniej w moim przypadku), odkaż zawartość HTML przed zapisaniem jej w bazie danych, a nie dostaniesz tego tajemniczego błędu SQL Servera! (Uh, prawidłowe odkażanie / dekodowanie zawartości HTML jest przedmiotem innej dyskusji, wartej osobnego wyszukiwania StackOverflow, jeśli potrzebujesz więcej informacji!)



3

Ważne jest rozmieszczenie znaczników XML w pliku Web.config

Pierwszy

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>

Po

<connectionStrings>
  <add name="SqlConnectionString" connectionString="Data Source=.; Initial Catalog=TestDB; Trusted_Connection=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

3

W mojej sytuacji wystąpił problem z usługą MSSQLSERVER, więc uruchomiłem ją ponownie i problem został rozwiązany.

Polecam więc przejść do aplikacji Usługi: Klawisz Windows, wyszukaj „Usługi” , a następnie znajdź instancję Sql zwykle „SQL Server (MSSQLSERVER)” na serwerze Microsoft SQL. Kliknij prawym przyciskiem myszy usługę i kliknij Start, jeśli wyłączony, kliknij Uruchom ponownie.


2

Ten błąd występuje, gdy instancja serwera SQL jest stopped.

PRZEJDŹ do wszystkich programów> SQL Server> Narzędzia konfiguracyjne> KIEROWNIK KONFIGURACJI SERWERA SQL

następnie kliknij USŁUGI SERWERA SQL, pojawi się lista instancji, wybierz odpowiednią instancję i kliknij ikonę odtwarzania na górnym pasku narzędzi, mam nadzieję, że to pomoże.

ta odpowiedź jest bardzo późna (ale lepiej późno niż nigdy;)


2

Rozwiązałem ten problem, ustawiając projekt wykorzystujący Entity Framework jako projekt startowy, a następnie uruchamiając polecenie „update-database”.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.