2013-04-11 13 views
50

Pierwsza próba

Mam Azure VM z Windows Server 2012, na którym po prostu zainstalowany SQL Server 2012 ekspresowe Database Engine składnik. Następnie postępowałem zgodnie z instrukcjami here, aby połączyć się zdalnie z SQL Server Management Studio.użycie SQL Server Management Studio na zdalne łączenie się z wystąpienie SQL Server Express hostowane na Azure Virtual Machine

  1. Create a TCP endpoint for the virtual machine
  2. Open TCP ports in the Windows firewall
  3. Configure SQL Server to listen on the TCP protocol
  4. Configure SQL Server for mixed mode authentication
  5. Create SQL Server authentication logins
  6. Determine the DNS name of the virtual machine
  7. Connect to the Database Engine from another computer

Po kroku siedem otrzymałem następujący błąd:

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: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 53)

Co jeszcze należy skonfigurować przed podłączeniem zdalnie?

Rozwiązywanie

śledzę instrukcje rozwiązywania problemów here. Każdy cytowany poniżej opis jest krokiem opisującym to łącze.

Confirm the instance of the SQL Server Database Engine is installed and running.

Gotowe. Zainstalowaliśmy SQL Server Express i działa jako nazwana instancja o nazwie SQLEXPRESS.

If you are attempting to connect to a named instance, make sure the SQL Server Browser service is running.

Gotowe. Wykonaliśmy kroki here, aby włączyć usługę SQL Server Browser.

Get the IP Address of the computer.

Gotowe. Użyjemy ich później do testowania łączności i może do skonfigurowania portu statycznego dla SQLEXPRESS.

10.241.62.155

FE80 :: 45c: 8c29: e19f: f78b% 15

Get the TCP port number used by SQL Server.

Gotowe. W SQL Server Management Studio logi serwera wykazały, że serwer został nasłuchuje na porcie 49169.

Enable Protocols

zrobić. Włączyliśmy już TCP/IP w menedżerze konfiguracji, ale na wszelki wypadek ponownie uruchomiliśmy usługę SQL Server.

Testing TCP/IP Connectivity

Gotowe. Użyliśmy tcping.exe przetestować łączność (cmd ping nie szybko pracować z Azure.) Byliśmy w stanie połączyć się z portem 80.

  • tcping.exe buddha.cloudapp.net> udany
  • budda tcping.exe .cloudapp.net 80> udany

Testing a Local Connection

Gotowe. Użyliśmy sqlcmd.exe z wiersza poleceń i byliśmy w stanie połączyć się lokalnie przez TCP z nazwą użytkownika i hasłem.

  • sqlcmd -S Buddha \ SQLEXPRESS (sukces poprzez wspólną protokołu pamięci)
  • sqlcmd -S tcp: Buddha \ SQLEXPRESS (sukces poprzez TCP)
  • sqlcmd -S tcp: Buddha \ SQLEXPRESS -U sa - P (sukces poprzez TCP z nazwą użytkownika)
  • sqlcmd -S tcp: 10.241.62.155 \ SQLEXPRESS -U sa -P (sukces z wewnętrznym IP)

Opening a Port in the Firewall

otworzyliśmy port, na którym SQL EXPRESS słucha. Logi serwera (powyżej) wykazała, że ​​SQLEXPRESS słucha na porcie 49169, ale jest to tylko jeden z wielu dynamicznych portów, a my chcieliśmy, aby skonfigurować port statyczną 1435.

  • Zastosowanie WF.msc stworzyć przychodzącego zasada TCP dla portu Portal 1435
  • Zastosowanie Azure Zarządzanie stworzyć punkt końcowy TCP na porcie 1435.

instrukcje rozwiązywania problemów również powiedzieć:

If you are connecting to a named instance or a port other than TCP port 1433, you must also open the UDP port 1434 for the SQL Server Browser service.

Ponieważ w e łączymy SQLEXPRESS (nazwaną instancję), musimy otworzyć port 1434 dla UDP.

  • Zastosowanie WF.msc stworzyć przychodzącego UCP regułę dla portu Portal 1434.
  • Zastosowanie Azure Zarządzanie stworzyć UDP końcowy dla portu 1434

Dalsze badania na temat łączenia się nazwane wystąpienia ujawniły problemy z portem dynamicznym. Powodem, dla którego używasz portu 1435 (statyczny) zamiast 49169 portu (jeden z wielu skutecznych opcji.)

Instances of SQL Server Express, SQL Server Compact, and named instances of the Database Engine use dynamic ports. To configure these instances to use a specific port, see Configure a Server to Listen on a Specific TCP Port (SQL Server Configuration Manager). and here .

zrobić. Udaliśmy się do SQL Configuration Manager> Konfiguracja sieciowa SQL Server> Protokoły dla SQLEXPRESS> TCP/IP, zrobiliśmy co następuje.

Karta Protokół> Listen All> NO.

adresów IP Tab> dla każdego wymienionego adresu

  • Włączone> Tak
  • TCP Dynamiczne Porty> Blank (usunąć zero)
  • TCP Port> 1435 (lub do wyboru)

Po ponownym uruchomieniu usługi SQLEXPRESS ponownie przejrzeliśmy logi SQL Server Management Studio i stwierdziliśmy, że serwer nasłuchuje na porcie 1435 !!! Brawo!

Testing the Connection

Gotowe. Otworzyliśmy SQL Server Management Studio na naszym lokalnym (innym niż Azure) komputerze i podłączyliśmy go.

  • buddha.cloudapp.net, 1435 OR buddha.cloudapp.\ Netto SQLEXPRESS
  • sa
  • hasło

sukcesu.

+3

Wow, niesamowita praca z listą wszystkich kroków i prób. –

+2

Właśnie uratowałeś mi mnóstwo czasu! Kluczem dla mnie był sam koniec: karta Protokół> Listen All> NO. Nie musiałem zmieniać adresu IP z 1433, ale usunąłem 0 z dynamicznych portów na dobrą miarę. Zakładam, że moje problemy wynikają ze słuchania wszystkich innych wymienionych protokołów. Dobra robota! – hiro77

Odpowiedz

15

Oto trzy strony internetowe, na których znaleźliśmy odpowiedź. Najtrudniejszą częścią było skonfigurowanie portów statycznych dla SQLEXPRESS.

Provisioning a SQL Server Virtual Machine on Windows Azure. Te wstępne instrukcje stanowiły 25% odpowiedzi.

How to Troubleshoot Connecting to the SQL Server Database Engine. Czytanie tego uważnie zapewniło kolejne 50% odpowiedzi.

How to configure SQL server to listen on different ports on different IP addresses?. Umożliwiło to ustawienie portów statycznych dla nazwanych instancji (np. SQLEXPRESS). Ostateczne 25% odpowiedzi zajęło nam ostatnie 50%.

13

Fakt, że otrzymujesz błąd od Dostawcy rur nazw, mówi nam, że nie używasz protokołu TCP/IP podczas próby ustanowienia połączenia. Spróbuj dodać prefiks "tcp" i podaj numer portu:

tcp:name.cloudapp.net,1433 
+0

Witaj Paulie, nadal występuje błąd, ale teraz jest to spowodowane przez dostawcę protokołu TCP, który nie ma nazwanego dostawcy potoków. - Shaun Luttin 7 min. Temu –

+0

Przepraszam, na podstawie szybkiej lektury twojego pytania, myślałem, że już skonfigurowałeś swój serwer do nasłuchu na porcie statycznym 1433. –

+0

Bez obaw. Dziękuję Paul. –

1

Ja też zmagałem się z czymś podobnym. Domyślam się, że twoim rzeczywistym problemem jest połączenie się z instancją SQL Express działającą na innym komputerze. Kroki, które należy wykonać, można podsumować w następujący sposób:

  1. Upewnij się, że SQL Express jest skonfigurowany do uwierzytelniania SQL, a także do uwierzytelniania systemu Windows (ustawienie domyślne). Robisz to za pośrednictwem SQL Server Management Studio (SSMS) Właściwości serwera/Bezpieczeństwo
  2. W SSMS utwórz nowy login o nazwie "sqlUser", powiedzmy, z odpowiednim hasłem, "sql", powiedz. Upewnij się, że ten nowy login jest ustawiony dla uwierzytelniania SQL, a nie uwierzytelniania systemu Windows. SSMS Server Security/Logins/Properties/General. Również zapewnić „Wymuszanie polityki hasło” jest zaznaczona
  3. obszarze Właściwości Roles/Server to zapewnić nowy użytkownik ma „sysadmin” rolę
  4. W SQL Server Configuration Manager SSCM (wyszukiwanie pliku SQLServerManagerxx.msc w Windows \ syswow64 jeśli potrafisz znajdź SSCM) pod SQL Server Konfiguracja sieci/Protokoły dla SQLExpress upewnij się, że włączony jest protokół TCP/IP. Możesz wyłączyć Named Pipes, jeśli chcesz, aby protokół TCP/IP i na karcie IPAddresses kliknij prawym przyciskiem myszy, upewnij się, że każdy z adresów IP jest ustawiony na Tak i Port TCP 1433 (jest to domyślny port dla SQL Server)
  5. W Zaporze systemu Windows (WF.msc) utwórz dwie nowe reguły przychodzące - jedną dla SQL Server i drugą dla usługi przeglądarki SQL. W przypadku serwera SQL musisz otworzyć port TCP 1433 (jeśli używasz domyślnego portu dla SQL Server) i co bardzo ważne dla usługi SQL Browser Service musisz otworzyć port UDP 1434. Nazwij te dwie reguły odpowiednio w zaporze sieciowej Zatrzymaj i zrestartuj usługę SQL Server za pomocą przystawki SSCM lub przystawki Services.msc.
  6. W przystawce Services.msc upewnij się, że typ uruchamiania usługi przeglądarki SQL jest automatyczny i następnie uruchom tę usługę:

W tym momencie powinieneś być w stanie połączyć się zdalnie, używając uwierzytelniania SQL, użytkownika "sqlUser" hasło "sql" do instancji SQL Express skonfigurowanej jak wyżej. Ostatnią wskazówką i łatwym sposobem na sprawdzenie tego jest utworzenie pustego pliku tekstowego z rozszerzeniem .UDL, powiedz "Test.UDL" na pulpicie.Dwukrotne kliknięcie w celu edycji tego pliku wywołuje okno dialogowe Właściwości łącza danych Microsoft, w którym można szybko przetestować zdalne połączenie SQL.

Powiązane problemy