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
- z systemem Windows Sieć Server 2008 R2
- Istnieją dwie karty sieciowe:
- Bridged więc łączy się z Internetem
- Tylko host, dzięki czemu mogę komunikować się szybciej przez sieć wirtualną
- Usługi SQL Engine i przeglądarki są uruchomione
- Włączyłem protokół TCP / IP dla SQL Express, ale nie skonfigurowałem żadnych adresów IP (osobna karta)
- Dodałem przychodzące reguły zapory dla:
- 1433 port TCP
- 1434 port UDP
- 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)
zmostkowany adres IP sieci
adres IP tylko dla hosta
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:
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:
- mostkowany adres NIC V6
- zmostkowany adres karty sieciowej V4
- localhost V6 (:: 1)
- localhost V4 (127.0.0.1)
- 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)?
źródło
netstat -a
możesz także skonfigurować adresy IP (krok czwarty), aby sprawdzić, czy coś poprawia.Odpowiedzi:
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ą.
źródło
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:
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:
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.
źródło