Użyj SQL Server Management Studio, aby połączyć się zdalnie z instancją SQL Server Express hostowaną na maszynie wirtualnej Azure

Początkowa próba

Mam maszynę wirtualną Azure z systemem Windows Server 2012, na której właśnie zainstalowałem komponent SQL Server 2012 Express Database Engine. Potem zastosowałem się do instrukcjitutaj połączyć się zdalnie z SQL Server Management Studio.

Utwórz punkt końcowy TCP dla maszyny wirtualnejOtwórz porty TCP w zaporze systemu WindowsSkonfiguruj program SQL Server do nasłuchiwania na protokole TCPSkonfiguruj SQL Server dla uwierzytelniania w trybie mieszanymUtwórz loginy uwierzytelniania SQL ServerOkreśl nazwę DNS maszyny wirtualnejPołącz się z aparatem bazy danych z innego komputera

Po kroku siódmym otrzymałem następujący błąd:

Wystąpił błąd związany z siecią lub specyficzny dla instancji podczas nawiązywania połączenia z serwerem SQL Server. Serwer nie został znaleziony lub był niedostępny. Sprawdź, czy nazwa instancji jest poprawna i czy SQL Server jest skonfigurowany tak, aby zezwalał na połączenia zdalne. (dostawca: Named Pipes Provider, błąd: 40 - Nie można otworzyć połączenia z SQL Server) (Microsoft SQL Server, Błąd: 53)

Co jeszcze muszę skonfigurować przed zdalnym połączeniem?

Rozwiązywanie problemów

Postępowałem zgodnie z instrukcjami rozwiązywania problemówtutaj. Każdy cytat poniżej jest krokiem opisanym przez ten link.

Potwierdź wystąpienie aparatu bazy danych SQL Server jest zainstalowany i uruchomiony.

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

Jeśli próbujesz połączyć się z nazwaną instancją, upewnij się, że usługa Przeglądarka SQL Server jest uruchomiona.

Gotowe. Podążaliśmy za krokamitutaj włączyć usługę przeglądarki SQL Server.

Uzyskaj adres IP komputera.

Gotowe. Wykorzystamy je później do testowania łączności i być może do ustawienia statycznego portu dla SQLEXPRESS.

10.241.62.155

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

Uzyskaj numer portu TCP używany przez SQL Server.

Gotowe. TheSQL Server Management Studio dzienniki serwera pokazały, że serwer nasłuchuje na porcie 49169.

Włącz protokoły

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

Testowanie łączności TCP / IP

Gotowe. Użyliśmytcping.exe przetestować łączność (cmd ping nie działa szybko z Azure.) Udało nam się połączyć z portem 80.

tcping.exe buddha.cloudapp.net> udanytcping.exe buddha.cloudapp.net 80> udany

Testowanie połączenia lokalnego

Gotowe. Użyliśmysqlcmd.exe z wiersza poleceń i mogli połączyć się lokalnie przez TCP z nazwą użytkownika i hasłem.

sqlcmd -S Buddha SQLEXPRESS (sukces za pomocą protokołu pamięci współdzielonej)sqlcmd -S tcp: Buddha SQLEXPRESS (sukces przez TCP)sqlcmd -S tcp: Buddha SQLEXPRESS -U sa -P (sukces przez TCP z nazwą użytkownika)sqlcmd -S tcp: 10.241.62.155 SQLEXPRESS -U sa -P (sukces z wewnętrznym IP)

Otwieranie portu w zaporze

Otworzyliśmy port, na którym nasłuchujemy SQLEXPRESS. Dzienniki serwera (powyżej) pokazały, że SQLEXPRESS nasłuchuje na porcie 49169, ale jest to tylko jeden z wielu dynamicznych portów i chcieliśmy skonfigurować statyczny port 1435.

Użyj WF.msc, aby utworzyć przychodzącą regułę TCP dla portu 1435.Użyj portalu zarządzania Azure, aby utworzyć punkt końcowy TCP dla portu 1435.

Instrukcje rozwiązywania problemów mówią również:

Jeśli łączysz się z anazwana instancja lub port inny niż TCP 1433, musisz także otworzyćPort UDP 1434 dla usługi przeglądarki SQL Server.

Ponieważ łączymy SQLEXPRESS (nazwaną instancję), musieliśmy otworzyć port 1434 dla UDP.

Użyj WF.msc, aby utworzyć przychodząceUCP reguła dla portu 1434.Użyj portalu zarządzania Azure, aby utworzyćUDP punkt końcowy dla portu 1434

Dalsze badania dotyczące łączenia się z nazwanymi instancjami ujawniły dynamiczne problemy z portami. Powód, dla którego używamy portu 1435 (statyczny) zamiast portu 49169 (jedna z wielu skutecznych opcji).

Instancje SQL Server Express, SQL Server Compact i nazwane wystąpienia aparatu bazy danych używają portów dynamicznych. Aby skonfigurować te instancje do korzystania z określonego portu, zobaczSkonfiguruj serwer do nasłuchiwania na określonym porcie TCP (SQL Server Configuration Manager). itutaj.

Gotowe. Udaliśmy się do Menedżera konfiguracji SQL> Konfiguracja sieci SQL Server> Protokoły dla SQLEXPRESS> TCP / IP.

Zakładka Protocol> Listen All> NO.

Karta Adresy IP> dla każdego podanego adresu

Włączone> TakTCP Dynamic Ports> Blank (usuń zero)Port TCP> 1435 (lub Twój wybór)

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

Testowanie połączenia

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

buddha.cloudapp.net, 1435 OR buddha.cloudapp.net SQLEXPRESSsahasło

Powodzenie.

questionAnswers(3)

yourAnswerToTheQuestion