Konfigurowanie maszyny wirtualnej z SQL Express, aby uzyskać dostęp za pomocą SSMS z hosta

1

Próbuję skonfigurować moją maszynę wirtualną za pomocą SQL Server 2008 R2 Express, dzięki czemu będę mógł zdalnie uzyskać dostęp do SQL za pomocą SQL Server Management Studio z komputera hosta.

Konfiguracja maszyny wirtualnej

  1. z systemem Windows Sieć Server 2008 R2
  2. Istnieją dwie karty sieciowe:
    • Bridged więc łączy się z Internetem
    • Tylko host, dzięki czemu mogę komunikować się szybciej przez sieć wirtualną
  3. Usługi SQL Engine i przeglądarki są uruchomione
  4. Włączyłem protokół TCP / IP dla SQL Express, ale nie skonfigurowałem żadnych adresów IP (osobna karta)
  5. Dodałem przychodzące reguły zapory dla:
    • 1433 port TCP
    • 1434 port UDP
  6. Jeśli zaglądam do połączeń sieciowych, widzę, że obie moje karty sieciowe są podłączone do sieci. Mogę ustawić zmostkowaną sieć na Miejsce pracy ale nie mogę zmienić typu sieci w sieci hosta. Więc jest ustawiony na Publiczny domyślnie. Nie jestem pewien, czy ma to z tym coś wspólnego, ale tak jest.

Konfiguracja HOST

Jedyną rzeczą, którą zrobiłem na moim hoście, jest to, że umieściłem nazwę mojego VM IP. I zrobiłem to za pomocą adresu IP hosta. Dodałem wpis do mojego pliku HOSTS.

Problem

Następnie otwieram SSMS na moim komputerze hosta i jeśli wybiorę Przeglądaj więcej w Połączyć się z serwerem okno dialogowe Widzę instancję SQL mojej maszyny wirtualnej. Ale kiedy próbuję się z nim połączyć, otrzymuję to, gdy próbuję się połączyć na trzy sposoby:

  • nazwa komputera (mój plik HOSTS dokona ponownego mapowania IP) enter image description here

  • zmostkowany adres IP sieci enter image description here

  • adres IP tylko dla hosta enter image description here

Pytanie 1: Co jeszcze mogę skonfigurować, aby móc uzyskać dostęp do wystąpienia SQL maszyny wirtualnej? Jeśli to możliwe, chciałbym go także skonfigurować, tak, żebym mógł uzyskać do niego dostęp tylko przez sieć Hots-only, a nie przez mostkowany. Ale to byłby dodatkowy bonus, jeśli mógłbym to skonfigurować w ten sposób.

Pytanie 2: Czy do uruchomienia potrzebuję przeglądarki SQL, o ile wiem, tylko dba o to, aby instancja SQL była wykrywalna. Jeśli wiem, wystąpienie SQL to tam i wiem, że używa portu 1433, czy nie mogę po prostu połączyć się za pomocą tego Nazwa serwera :

DATAVM\SQLEXPRESS,1433

Edytować

To jest wynik netstat: enter image description here

Ja też uciekłem portqry na hoście, aby sprawdzić moją instancję SQL na mojej maszynie wirtualnej. Jeśli spróbuję zmostkować adres IP, otrzymam odpowiedź przeglądarki SQL:

Starting portqry.exe -n 192.168.1.143 -e 1434 -p UDP ...

Querying target system called:
 192.168.1.143

Attempting to resolve IP address to a name...

IP address resolved to Datavm

querying...

UDP port 1434 (ms-sql-m service): LISTENING or FILTERED

Sending SQL Server query to UDP port 1434...

Server's response:

ServerName DATAVM
InstanceName SQLEXPRESS
IsClustered No
Version 10.50.1600.1
tcp 49159

Jak widzę w tym wyniku, moja instancja SQL faktycznie nasłuchuje na porcie TCP 49159.

Poszedłem więc do konfiguracji SQL i zmieniłem ten port na 1433.

Pytanie 3: Czy to normalne, że domyślnie port nie został ustawiony na 1433? Czy powinienem zmienić go z powrotem na 49159 i zmienić regułę zapory przychodzącej, aby przejść przez ten port lub shuld?

Zmieniając port na 1433 Mogę połączyć się z VM z mojego hosta SSMS . Ale mogę to zrobić tylko przy użyciu zmostkowanego adresu IP.

Jak rozumiem ustawienia TCP / IP w protokole SQL Adresy IP powinien wyświetlić wszystkie adresy IP komputera. Widzę 5 z nich:

  1. mostkowany adres NIC V6
  2. zmostkowany adres karty sieciowej V4
  3. localhost V6 (:: 1)
  4. localhost V4 (127.0.0.1)
  5. trochę ? Adres V6, który nie jest powiązany z siecią zmostkowaną ani z hostem (fe80 :: 100: 7f: fffe% 12)

Zakładam, że jest to również powód, dla którego nie mogę się połączyć za pomocą sieci tylko hosta ... Ale jak skonfigurować moją maszynę wirtualną, aby móc (i ewentualnie wyłączyć mostkowanie)?

Robert Koritnik
źródło
Sprawdź, czy w porcie jest słuchany netstat -a możesz także skonfigurować adresy IP (krok czwarty), aby sprawdzić, czy coś poprawia.
Tom Wijsman
@ TomWijsman: Sprawdź moje edytowane pytanie, do którego dołączyłem netstat wynik, a także częściowe rozwiązanie, w którym mogłem się połączyć. ale nie tak, jak chciałem ... Przeczytaj powyżej.
Robert Koritnik
Cieszę się, że rzeczywiście postępowałeś, nie jestem dobry w ustawieniach sieci maszyn wirtualnych, ale po prostu chciałem, żebyś dodał szczegóły, które mogą doprowadzić Cię (lub innych) do rozwiązania. Powodzenia! :)
Tom Wijsman

Odpowiedzi:

0

Przeglądarka SQL jest niezbędna dla nazwanych wystąpień, jeśli pamiętam poprawnie. Twoja nazwana instancja nasłuchuje w innym porcie (który odkryłeś), a przeglądarka SQL ujawni ten port. Możesz także skonfigurować instancję do nasłuchiwania na określonym porcie przy użyciu konfiguracji sieci SQL.

Zdarza się, że komunikacja sieciowa między hostami jest czasami frustrująca.

Czy próbowałeś wyłączyć zaporę ogniową na maszynie wirtualnej tylko po to, aby przetestować? Zwykle jest to krok 1 w przypadku problemów z łącznością punktową. 90% + problemów z łącznością to problemy z zaporą.

MikeJansen
źródło
Ponadto dodaj procesy SQL do wyjątków zapory, a nie konkretnych portów. W ten sposób nie ma znaczenia, z których portów korzysta aplikacja. Mówisz zaporze „ta aplikacja jest fajna, ufałbym jej swoim dzieciom”.
MikeJansen
Możesz edytować swoją odpowiedź za pomocą tych informacji, zamiast pozostawiać ją jako komentarz.
soandos
@MikeJansen: Cóż, wydaje się, że szczególnie jeśli twój serwer jest otwarty lepiej jest nie uruchamiaj przeglądarki SQL ponieważ nie jest to konieczne. Zawsze możesz połączyć się za pomocą informacji o porcie jako nazwa_komputera Nazwa instancji SQL, numer portu . Po prostu działa. A ponieważ aplikacja uzyskuje dostęp do bazy danych SQL (a Ty dewelopera), port jest znaną zmienną. Uruchomienie przeglądarki SQL powoduje, że ta zmienna jest publicznie znana. I zamiast dodawać EXE do firewalla, właśnie dodałem port. Można argumentować, który z nich jest lepszy.
Robert Koritnik
@MikeJansen: i tak ... Próbowałem wyłączyć zaporę. Wygląda na to, że nie mogę się połączyć za pośrednictwem wirtualnej sieci host-only ... Myślę, że powinno to być teraz osobne pytanie, ponieważ jest częściowo związane z pierwotnym pytaniem.
Robert Koritnik
@MikeJansen: FYI: Udało mi się to teraz skonfigurować, mimo że zadałem pytanie Błąd serwera także. To jest link do rozwiązania tam.
Robert Koritnik
0

Rozwiązanie

Gdy sięgam głębiej, wydaje mi się, że jest to bardziej problem z siecią niż konfiguracja SQL Server. I to było.

Rozwiązałem problem z siecią i możesz przeczytać o rozwiązaniu Błąd serwera . Pomoże to skonfigurować wirtualną sieć host-only, aby nie była tak zablokowana, jak domyślnie ustawia ją system Windows.

Ale jest jeszcze coś innego. A to są ** adresy IP, które można zobaczyć w protokole TCP / IP w konfiguracji instancji SQL Server.

Problem polega na tym, że ta lista IP jest wypełniana tylko podczas instalowania instancji SQL Server. Jeśli dokonasz zmian w kartach sieciowych, zmiany te nie zostaną odzwierciedlone w konfiguracji serwera SQL. To jest Znana kwestia od 2006 r., ale jeszcze nie rozwiązany.

W moim przypadku dodałem dodatkową kartę sieciową, która jest tylko hostem, a ponieważ moja instancja SQL została już zainstalowana, te adresy IP nie są wyświetlane w konfiguracji. Jak się okazuje, możesz ręcznie dodaj te nowe lub zmienione ustawienia za pomocą edytora rejestru.

Nawigować do:

HKEY_LOCAL_MACHINE
  SOFTWARE
    Microsoft
      Microsoft SQL Server
        MSSQL10_50.[InstanceName]
          MSSQLServer
            SuperSocketNetLib
              Tcp

Znajdziesz tu wszystkie adresy IP, które możesz tam skonfigurować. Ponieważ musiałem dodać dwa kolejne adresy, które wyeksportowałem IP2, a następnie edytowałem zapisany plik * .reg:

  1. Zmieniono pierwszą linię i zmieniono IP2 na IP n (gdzie n jest bieżącym maks + 1)
  2. Zmieniono adres IP i dodano adres IP v6 sieci host-only
  3. Skopiował i wkleił wszystkie te linie
  4. Zwiększony adres IP n o 1
  5. Zmieniono adres IP i dodano adres IP v4 sieci tylko dla hosta

Zapisano plik i zaimportowano go do edytora rejestru. Mogę wtedy zobaczyć dwa kolejne adresy IP w edytorze rejestru.

Otworzyłem konfigurację SQL Server i tak, teraz mam dwa dodatkowe adresy OP w konfiguracji instancji protokołu TCP / IP SQL, które mogę indywidualnie skonfigurować.

to jest to! Prace.

Robert Koritnik
źródło