Włączanie połączeń zdalnych dla SQL Server Express 2012

Właśnie zainstalowałem SQL Server Express 2012 na moim domowym serwerze. Próbuję połączyć się z nim z Visual Studio 2012 z mojego komputera stacjonarnego i wielokrotnie otrzymuję znany błąd:

Podczas nawiązywania połączenia z serwerem SQL wystąpił błąd związany z siecią lub specyficzny dla instancji. Serwer nie został znaleziony lub nie był dostępny. Sprawdź, czy nazwa wystąpienia jest poprawna i czy SQL Server jest skonfigurowany tak, aby zezwalał na połączenia zdalne. (provider: Named Pipes Provider, error: 40-nie można otworzyć połączenia z serwerem SQL)

Co zrobiłem aby to naprawić:

  • Uruchom SQL Server Configuration Manager na serwerze i włącz przeglądarkę SQL Server
  • Dodaj wyjątek zapory systemu Windows na serwerze dla TCP, portów 1433 i 1434 w podsieci lokalnej.
  • sprawdź, czy mam login na instancji SQL Server dla użytkownika, którego jestem zalogowany jako na pulpicie.
  • sprawdź, czy używam uwierzytelniania Windows na serwerze SQL przykład.
  • wielokrotne restartowanie serwera SQL i całego serwera dang.
  • Wyciągnij mi wszystkie włosy.

Jak mogę uzyskać SQL Server 2012 Express, aby umożliwić połączenia zdalne!?

Author: Ryan Lundy, 2012-07-01

16 answers

Dobrze, cieszę się, że zapytałem . Rozwiązanie, które w końcu odkryłem, było tutaj:

Jak skonfigurować SQL Server Express, aby zezwalał na zdalne połączenia tcp / ip na porcie 1433?

  1. Uruchom SQL Server Configuration Manager.
  2. przejdź do Konfiguracja sieci SQL Server > Protokoły dla SQLEXPRESS.
  3. upewnij się, że TCP/IP jest włączone.

Jak na razie, tak dobrze, i całkowicie oczekiwane. Ale wtedy:

  1. Kliknij prawym przyciskiem myszy na TCP / IP i wybierz właściwości .
  2. sprawdź, czy w obszarze IP2 adres IP jest ustawiony na adres IP komputera w podsieci lokalnej.
  3. przewiń w dół do IPAll.
  4. upewnij się, że dynamiczne porty TCP to puste . (Mój został ustawiony na jakiś 5-cyfrowy numer portu.)
  5. upewnij się, że Port TCP jest ustawiony na 1433. (Mój był pusty.)

(Ponadto, jeśli wykonasz te kroki, to nie jest konieczne włączenie przeglądarki SQL Server, a musisz tylko zezwolić na port 1433, a nie 1434.)

Te dodatkowe pięć kroków to coś, czego nie pamiętam, aby kiedykolwiek musiałem zrobić w poprzedniej wersji SQL Server, Express lub w inny sposób. Wydaje się, że były one konieczne, ponieważ używam nazwanej instancji (myservername\SQLEXPRESS) na serwerze zamiast domyślnej instancji. Zobacz tutaj:

Konfiguracja serwera do nasłuchu na określonym porcie TCP (SQL Server Configuration Manager)

 716
Author: Ryan Lundy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-10 22:53:06

Poprawnym sposobem połączenia się ze zdalnym serwerem SQL Server (bez otwierania portu UDP 1434 i włączania przeglądarki SQL Server) jest użycie ip i portu zamiast nazwanej instancji.

Używanie ip i portu zamiast nazwanej instancji jest również bezpieczniejsze, ponieważ zmniejsza powierzchnię ataku.

Być może 2 obrazy mówią 2000 słów...

Ta metoda używa określonego portu (to jest to, co większość ludzi chce wierzę)..

Tutaj wpisz opis obrazka

To metoda wymaga otwarcia portu UDP 1434 i uruchomienia przeglądarki SQL Server..

Tutaj wpisz opis obrazka

 101
Author: Rosdi Kasim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-05 10:40:36

Jeszcze Jedno...

Kyralesa dostarcza wspaniałych informacji, ale mam jeszcze jedną rzecz do dodania, gdzie byłem zakłopotany nawet po tym artykule.

Pod SQL Server Network Configuration > Protocols for Server > TCP / IP Enabled. Kliknij prawym przyciskiem myszy TCP / IP i wybierz Właściwości. Pod adresami IP należy ustawić Enabled na Yes dla każdego typu połączenia, którego używasz.

Tutaj wpisz opis obrazka

 29
Author: Pete,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-08 19:57:43

Możesz użyć tego, aby rozwiązać ten problem:

Przejdź do START > EXECUTE i uruchom CLICONFG.EXE.

Protokół nazwanych rur będzie pierwszy na liście.Zdegradować i promować TCP / IP.

Dokładnie przetestuj aplikację.

Mam nadzieję, że to pomoże.

 16
Author: Ageu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-20 04:22:21

Można również ustawić

Listen All to NO

W oknie dialogowym protokół następnie w adresie IP IP1 (say)

Set enabled to Yes,

Define yr IP address,

Ustaw dynamikę TCP na pustą i

Port TCP do 1433 (lub cokolwiek innego)

 14
Author: johnroster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-26 12:16:01

Ostatnio miałem taki problem. 2015 Sierpień

Rozwiązane przez otwarcie SQL Server Configuration Manager

  • Konfiguracja sieci SQL Server - > Protokoły dla SQLEXPRESS
  • Właściwości na karcie TCP / IP - > adresy IP
  • wszystko pozostaje domyślne, tylko Ustaw Port IPALL: TCP na 1433

Można połączyć się z SQL Server Manager do maszyny: [hostaddress], 1433

Przykład:

Tutaj wpisz opis obrazka

 10
Author: DDan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-20 16:42:14

Ten artykuł mi pomógł...

Jak włączyć połączenia zdalne w SQL Server

Wszystko w SQL serverze zostało skonfigurowane, mój problem polegał na tym, że firewall blokuje port 1433

 9
Author: JGilmartin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-14 20:28:02

Podczas mojej instalacji SQL Server 2012 Developer Edition, zainstalowanej z ustawieniami domyślnymi, musiałem po prostu załadować SQL Server Configuration Manager - > SQL Server Network Configuration - > Protocols for MSSQLSERVER I zmienić TCP/IP z Disabled na Enabled.

 6
Author: Phil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-04 14:27:25

Aby otworzyć port UDP 1434 musiałem dodać regułę portu przychodzącego zapory sieciowej. Jest to Przeglądarka SQL Server nasłuchuje.

 5
Author: tom redfern,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-10 13:28:52

Wolę sposób "Rosdi Kasim", ponieważ to nie wymaga konfiguracji szczegółów na IP.

Na pewno zapomnę go ponownie, gdy spróbuję ponownie uruchomić inny serwer.

Keep it Simple (KISS) wystarczy włączyć usługę przeglądarki Sql Server, a następnie dodać \SQLEXPRESS za IP po podłączeniu serwera.

Bezpośrednie używanie IP bez "\SQLEXPRESS " było moim punktem błędu, ponieważ nie używa domyślnego portu.

Dzięki.
 3
Author: ALien,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-03 16:46:35

Miałem ten sam problem z SQL Server 2014 lokalnie zainstalowaną instancją nazwaną. Połączenie przy użyciu FQDN\InstanceName nie powiodło się, podczas gdy połączenie przy użyciu tylko mojego hostname\InstanceName zadziałało. Na przykład: łączenie za pomocą mycomputername\sql2014 zadziałało, ale użycie mycomputername.mydomain.org\sql2014 nie zadziałało. DNS został poprawnie rozwiązany, TCP / IP został włączony w SQL Configuration Manager, dodano reguły zapory systemu Windows (a następnie wyłączono zaporę dla testów, aby upewnić się, że niczego nie blokuje), ale żaden z nich nie naprawił problemu.

W końcu musiałem uruchom usługę" SQL Server Browser " na serwerze SQL i naprawiono problem z łącznością.

Nigdy nie zdawałem sobie sprawy, że usługa przeglądarki SQL Server faktycznie pomaga serwerowi SQL Server w nawiązywaniu połączeń; miałem wrażenie, że po prostu pomagała wypełniać listy rozwijane po kliknięciu" przeglądaj więcej " serwerów, z którymi można się połączyć, ale w rzeczywistości pomaga wyrównać żądania klientów z odpowiednim portem # do użycia, jeśli port # nie jest wyraźnie przypisany (podobnie jak sposób, w jaki serwer SQL powiązania witryn pomagają złagodzić ten sam problem na serwerze sieci Web usługi IIS, na którym znajduje się wiele witryn).

Ten element connect dał mi podpowiedź o usłudze SQL Server Browser: https://connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine-name{[14]

  • gdy używasz wstst05\SQLEXPRESS jako nazwy serwera, kod klienta oddziela nazwę Maszyny od nazwy instancji, a wstst05 jest w porównaniu przeciwko nazwie netbios. Nie widzę problemu, żeby pasowały a połączenie jest uważane za lokalne. Stamtąd odzyskujemy potrzebne informacje BEZ kontaktując się z przeglądarką SQL i łącząc się z Instancja SQL za pośrednictwem pamięci współdzielonej bez żadnego problemu.
  • Kiedy używasz wstst05.capatest.local\SQLEXPRESS, kod klienta nie porównuje nazwy (wstst05.capatest.lokalne) do nazwa netbios (wstst05) i uważa połączenie za "zdalne". To jest według projektu i na pewno rozważymy poprawę tego w przyszłość. W każdym razie, ze względu na rozważenie pilota połączenia i fakt że jest to instancja nazwana, klient decyduje, że musi użyć SQLBrowser dla rozdzielczości nazw. Próbuje skontaktować się z przeglądarką SQL na wstst05capatest.lokalny (port UDP 1434) i najwyraźniej ta część nie działa. Stąd pojawia się błąd.

Powód usługi" SQL Server Browser " firmy TechNet (podkreślenie dodane przeze mnie): https://technet.microsoft.com/en-us/library/ms181087(v=sql. 120). aspx

Z sekcji "Korzystanie z przeglądarki SQL Server":

Jeśli usługa przeglądarki SQL Server nie jest uruchomiona, nadal możesz aby połączyć się z SQL Server Jeśli podasz poprawny numer portu lub nazywa się pipe. Na przykład można połączyć się z domyślną instancją SQL Server z TCP / IP, jeśli działa na porcie 1433. Jednakże jeśli usługa SQL Server Browser nie jest uruchomiona, po połączenia nie działają :

  • każdy komponent, który próbuje połączyć się z nazwaną instancją bez pełnego określenia wszystkich parametrów (takich jak port TCP/IP lub named pipe) .
  • każdy komponent, który generuje lub przekazuje informacje o wystąpieniu serwera, które mogą być później użyte przez inne komponenty do ponownego połączenia.
  • podłączenie do nazwanej instancji bez podania numeru portu lub rury.
  • DAC do nazwanego instancja lub domyślna instancja, jeśli nie używa portu TCP/IP 1433.
  • usługa OLAP redirector.
  • wyliczanie serwerów w SQL Server Management Studio, Enterprise Manager lub Query Analyzer.

Jeśli używasz SQL Server w scenariuszu klient-serwer (na przykład, gdy Twoja aplikacja uzyskuje dostęp do SQL Server przez sieć), jeśli zatrzymujesz lub wyłączasz usługę przeglądarki SQL Server, musisz przypisać specyficzny numer portu dla każdej instancji oraz napisz swojego klienta kod aplikacji, aby zawsze używać tego numeru portu. Takie podejście ma następujące problemy :

  • musisz zaktualizować i zachować kod aplikacji klienta, aby upewnić się, że łączy się on z odpowiednim portem.
  • port wybrany dla każdej instancji może być używany przez inną usługę lub aplikację na serwerze, powodując wystąpienie SQL Serwer będzie niedostępny.

I więcej informacji z tego samego artykułu z "How SQL Przeglądarka działa" sekcja:

Ponieważ tylko jedna instancja SQL Server może używać portu lub rury , różne numery portów i nazwy rur są przypisane do nazwanych instancji, w tym SQL Server Express. Domyślnie, gdy włączone, zarówno instancje nazwane, jak i SQL Server Express są skonfigurowane tak, aby użyj portów dynamicznych, czyli dostępny port jest przypisany, gdy SQL Serwer startuje. Jeśli chcesz, określony port można przypisać do instancja serwera SQL. Kiedy łączenia, klienci mogą określić konkretnego portu; ale jeśli port jest przypisany dynamicznie, port liczba może się zmieniać w każdej chwili, gdy SQL Server jest restartowany, więc właściwy port numer nie jest znany klientowi. ... Gdy klient SQL Server zażąda Zasoby serwera SQL, biblioteka sieci klienta wysyła komunikat UDP do serwera za pomocą portu 1434. Przeglądarka SQL Server odpowiada za Port TCP / IP lub nazwany przewód żądanej instancji. Sieć biblioteki w aplikacji klienckiej, a następnie kończy połączenie przez wysyłanie żądania do serwera za pomocą portu lub nazwanego pipe of the pożądana instancja

 3
Author: BateTech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-20 18:08:45

Musiałem dodać port poprzez Configuration Manager i dodać numer portu w moim połączeniu sql [host]\[nazwa instancji db],1433

Zauważ, (przecinek) pomiędzy instancename i port

 2
Author: wchoward,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-16 10:37:06

Miałem inny problem niż wszystkie odpowiedzi do tej pory wymienione!

Powinienem zacząć od tego, że miałem go w Visual Studio, a nie SQL Server Express, ale rozwiązanie powinno być dokładnie takie samo.

Boże, to naprawdę proste i może trochę głupie. Kiedy próbowałem stworzyć bazę danych i Visual Studio zasugerował nazwę serwera SQL, dał mi nazwę użytkownika systemu Windows, a ponieważ jest to faktycznie nazwa serwera poszedłem do to.

W rzeczywistości był to mój Windows username + \SQLEXPRESS. Jeśli nie zmieniłeś żadnych ustawień, prawdopodobnie jest to również twoje. Jeśli to zadziała, przestań czytać; to jest moja odpowiedź. Jeśli to nie zadziała, może nazwa jest inna.

Jeśli, tak jak ja, miałeś tylko ten problem w Visual Studio, aby sprawdzić, co jest twoje, wykonaj następujące kroki:

  1. Open SQL Server Management Studioikona.
  2. Jeśli nie widzisz swojego serwera (zadokowanego po lewej stronie przez domyślnie) naciśnij F8 lub przejdź do widoku - > Object Explorer .
  3. kliknij prawym przyciskiem myszy nazwę serwera i wybierz właściwości (ostatnia Pozycja)
  4. w lewym dolnym rogu możesz zobaczyć rzeczywistą nazwę serwera pod "Server " (nie Połączenie, ale nad nim).

To jest nazwa serwera i to jest to, co należy spróbować połączyć! nie to, co sugeruje Visual Studio!

 1
Author: MasterMastic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-24 12:20:41

W moim przypadku baza danych działała na niestandardowym porcie. Sprawdź, czy port, z którym się łączysz, jest taki sam jak port, na którym działa baza danych. Jeśli jest więcej instancji SQL server, sprawdź poprawną.

 1
Author: qub1n,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-02 19:22:05

Wystarczy otworzyć odpowiedni port na firewallu serwera.

 0
Author: user1968210,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-10 21:43:38

Jeszcze jedną rzeczą do sprawdzenia jest to, że poprawnie napisałeś nazwaną instancję!

Ten artykuł jest bardzo pomocny w rozwiązywaniu problemów z połączeniem: Jak rozwiązać problem z połączeniem z silnikiem bazy danych SQL Server

 0
Author: Matt Burrell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-19 10:35:44