2011-07-03 22 views
8

Wiem, że powinniśmy być świadomi takich zwrotów, ale nagle wszystkie moje połączenia z localhost\sqlexpress przestały działać. Działając jako .\sqlexpress i (local)\sqlexpress, nie byłoby to wielkim problemem, gdyby nie fakt, że pracuję nad projektem zespołowym, w którym wszystkie ciągi połączeń są zdefiniowane w poprzednim formacie. I oczywiście trudno mi jest zaakceptować, że nie powinno już działać, więc spędziłem kilka godzin na analizie i ponownym zainstalowaniu kilku wersji SQL Server bezskutecznie. (I na drodze łamania projektów db w VS2010, więc musiałem ponownie zainstalować ...).Nie można połączyć się z bazą danych za pomocą localhost sqlserver

Ale tutaj są szczegóły. Jak już wspomniano, nie mogłem połączyć się z localhost\sqlexpress, ale z .\sqlexpress. Te same objawy za pomocą SQL Server Manager i ciągi połączeń dla wdrażania i uruchamiania usług wcf. Wystarczająco zabawne rozwiązywanie domyślnej instancji, jak działa localhost.

Po pierwsze, tak, SQL Server działa i tylko dla pewności włączyłem TCP/IP i ustawiłem port na 1433, chociaż działa on na moim komputerze współpracowników z wyłączonym TCP/IP. (Gdzieś po drodze przeczytałem, że localhost można rozwiązać przy użyciu pamięci współużytkowanej podczas korzystania z natywnego klienta SQL, więc domyślam się, że tak właśnie dzieje się w jego systemie.)

Konfiguracja to tylko jedna instancja SQL Server Express 2008 R2 i VS2010 w systemie Windows 7 Professional.

Uruchamianie SQL Express errorlog mówi:

Server is listening on [ 'any' <ipv6> 1433]. 
Server is listening on [ 'any' <ipv4> 1433]. 

Netstat mówi (fragment):

TCP 0.0.0.0:1433   Machinenename:0    LISTENING 
TCP [::]:1433    Machinenename:0    LISTENING 

Zauważam brak 127.0.0.1:1433 i UDP na dowolny port 1433

W celu zdiagnozowania problemu używam sqlcmd, aby dowiedzieć się, który transport jest używany :

1. localhost \ SQLEXPRESS

sqlcmd -Slocalhost\sqlexpress -> Shared memory 
sqlcmd -Stcp:localhost\sqlexpress -> SQL Server Network Interfaces: Error Locating Server/Instance Specified 

nie można połączyć się z localhost \ SQLEXPRESS z SQL Server Management Studio, nawet jeśli mogę określić pamięci współdzielonej jako protokół

2. localhost

sqlcmd -Slocalhost -> TCP 
sqlcmd -Stcp:localhost -> TCP 

Może łączyć się z lokalnym hostem z SQL Server Management S tudio

3. (local) \ SQLEXPRESS

sqlcmd -S(local)\sqlexpress -> Shared memory 
sqlcmd -Stcp:(local)\sqlexpress -> SQL Server Network Interfaces: Error Locating Server/Instance Specified 

można połączyć się (local) \ SQLEXPRESS z SQL Server Management Studio

Więc jestem zagubiony tutaj. Każda pomoc jest wysoko ceniona.

Odpowiedz

2

Czy weryfikowałeś, że pamięć współdzielona jest włączona w SQL Server Configuration Manager, w SQL Server Konfiguracja sieci | Protokoły?

Kiedy wyłączam protokół "Shared Memory", "sqlcmd -S. \ Sqlexpress" upływa. Włączenie go sprawia, że ​​polecenie działa dobrze.

Jeszcze jedna myśl ... Port 1434 jest używany do usługi SQL Server Discovery, która pozwala programom takim jak SQL Management Studio i tym podobne odkrywać, że SQL Server działa na komputerze. Jeszcze jedna rzecz do zbadania.

4

w MS SQL, przejdź do Narzędzia konfiguracyjne -> SQL Server Configuration Manager Configuration Wybierz SQL Server Network -> Wybierz protokół w oknie po prawej stronie pozwalają TCP/IP i ponownie uruchomić usługi w services.msc następnie spróbuj połączyć się z localhost \ sqlexpress

0

Mieliśmy ten problem. Z jakiegoś powodu na tym komputerze został utworzony Alias, który skierował nazwę serwera, którego używaliśmy (localhost \ SQL2008_R2) do serwera, który już nie istnieje.

Po usunięciu Aliasu wszystko działało.

Aliasy są węzłem drzewa w programie SQL Server Configuration Manager.

SQL Server Configuration Manager Alias Node

Powiązane problemy