Jak zmiana SID systemu Windows wpływa na SQL Server?

11

Nasi administratorzy Windows zidentyfikowali problem ze sposobem klonowania serwerów Windows. Najwyraźniej niektóre sklonowane serwery mają ten sam identyfikator SID na poziomie systemu operacyjnego. Słyszałem, że Microsoft nie obsługuje serwerów, które mają zduplikowane identyfikatory SID. Dlatego identyfikatory SID na tych serwerach muszą zostać zmienione.

Jestem ciekawy, jak to wpływa na SQL Server. Jakieś pomysły? Jak wpływa na klastrowane serwery baz danych?

Ra Osolage
źródło
Istnieje mnóstwo powodów, aby nie klonować okien, ale identyfikator SID nie jest jednym z nich
Jim B

Odpowiedzi:

9

Zostaw SID w spokoju. NewSID został wycofany, ponieważ Mark Russinovich wykonał kopanie i stwierdził, że całe „zduplikowane identyfikatory SID == złe!” Linia, którą wszyscy wbiliśmy w nasze czaszki w ciągu ostatniej dekady, to po prostu mnóstwo bzdur.

Zobacz najnowszy wpis Marka: The Machine SID Duplication Myth .

ThatGraemeGuy
źródło
6

Zdecydowanie odradzam zmienianie identyfikatora SID, dopóki nie przeczytasz: Zmiana identyfikatora SID maszyny za pomocą nowego identyfikatora SID powoduje uszkodzenie serwera SQL (i jak to naprawić)

Najwyraźniej niektóre sklonowane serwery mają ten sam identyfikator SID na poziomie systemu operacyjnego.

Zaryzykowałbym przypuszczenie, że WSZYSTKIE sklonowane systemy mają ten sam identyfikator SID. GhostWalk może dla Ciebie zregenerować identyfikatory SID. Użycie sysprep na początkowym obrazie klonowania może również uratować cię w przyszłych systemach.

Jeśli zainstalowano program SQL Server, NIE ZMIENIĆ SID. Staną się złe rzeczy.

Joseph Kern
źródło
+1 dla SysPrep, który jest AFAIK obsługiwanym rozwiązaniem dla takich scenariuszy.
Michael Stum
1
-1 za brak wzmianki o tym, że jakakolwiek zmiana sid jest nieobsługiwana, w tym sysprep, jeśli SQL jest zainstalowany.
Jim B
Jeśli serwer działa i zainstalowane są rzeczy, powiedziałbym, że jesteś niezły. Powinieneś zmienić identyfikator SID, jak tylko sklonujesz serwer. Dziwię się, że mogłeś dołączyć do dwóch serwerów z tym samym identyfikatorem SID w domenie!
Nick Kavadias
2

Możesz użyć sysinternals NewSID: http://technet.microsoft.com/en-us/sysinternals/bb897418.aspx

Zmień nazwę komputera w SQL:

use master
sp_dropserver '<old computer name>'
GO
sp_addserver '<new computer name>', local
GO

sp_helpserver -- will show you the new computer name

Następnie uruchom ponownie usługę serwera SQL.

Dave
źródło
Dziękujemy za wskazanie ręcznej zmiany nazwy serwera SQL. Często jest zapomniany w klonach SQL (klonuję mój przy użyciu sysprep)
Precipitous
2

Jeśli baza danych wykonuje zdalne transakcje przy użyciu koordynatora transakcji rozproszonych Microsoft, należy pamiętać, że sklonowane maszyny mają również ten sam identyfikator MSDTC, który nie jest identyfikatorem SID i nie jest zmieniany przez NewSID.

Zobaczysz to w Podglądzie zdarzeń:

Lokalne MS DTC wykryło, że MS DTC na SERWERZE ma taką samą unikalną tożsamość jak lokalne MS DTC. Oznacza to, że dwa MS DTC nie będą mogły się ze sobą komunikować. Ten problem zwykle występuje, jeśli jeden z systemów został sklonowany przy użyciu nieobsługiwanych narzędzi do klonowania. MS DTC wymaga klonowania systemów za pomocą obsługiwanych narzędzi do klonowania, takich jak SYSPREP. Uruchomienie „msdtc -uninstall”, a następnie „msdtc -install” z wiersza polecenia naprawi problem. Uwaga: Uruchomienie polecenia „msdtc -uninstall” spowoduje utratę przez system wszystkich informacji konfiguracyjnych MS DTC.

Rozwiązuję to tak:

msdtc -uninstall

Poczekaj kilka minut

msdtc -install
sc config msdtc start= auto
sc start msdtc
crb
źródło
1
Z jakiegoś dziwnego powodu „sc config” wymaga spacji między „start =” a „auto”, tj. „Sc config msdtc start = auto”.
ThatGraemeGuy
Dzięki - miałem tam miejsce, ale zredagowałem je, gdy pisałem, myśląc, że to literówka :)
crb
2

Użyj narzędzia Microsoft NewSID lub sysprep, które przypomina ponowną instalację systemu Windows bez kopiowania całego pliku.

Nie sądzę, że można połączyć dwa komputery w tej samej domenie z tym samym identyfikatorem SID, więc powiedziałbym, że klastrowane serwery SQL nie miałyby szans, ponieważ serwery muszą należeć do domeny.

Nick Kavadias
źródło
1

Jedynym obsługiwanym sposobem klonowania systemu jest sysprep. Istnieje wiele powodów, dla których nie należy klonować serwera SQL:

-Nie jest obsługiwany przez Microsoft CSS.

-SQL nie będzie działał poprawnie, dopóki nie zostanie zmieniona jego nazwa.

-Jeśli masz usługi sprawozdawcze, zostanie również ukryty.

- Konta systemu i usług sieciowych otrzymają nowy identyfikator SID i hasła, więc jeśli użyjesz ich jako kont usług, będzie trochę bólu.

-SQL Server tworzy dobre grupy lokalne z tym formatem. SQLServer2005MSSQLUser $$ MSSQLSERVER. Zmiana nazwy nie jest obsługiwana

Aby naprawić sytuację, chciałbym-

Złam klaster, odbuduj system, zainstaluj SQL, utwórz nowy klaster, uruchom kopię zapasową na serwerze, który nie został odbudowany - a następnie zatrzymaj go, przywróć kopię zapasową do nowego klastra, skieruj aplikację do nowego klastra, odbuduj pozostałe serwer i dodaj go do nowego klastra

- alternatywnie (prawdopodobnie łatwiej) dlaczego nie zbudować nowego serwera o nowej nazwie (rozwiąże to potencjalne problemy z identyfikatorem SID dowolnego typu), a następnie przerwać instalację klastra SQL dołączyć do klastra, przełączenie awaryjne do tego pola, a następnie powtórzyć proces, że nie ma przestojów i nie ma potrzeby tworzenia kopii zapasowych / przywracania (chociaż sugerowałbym, że mimo to). Używamy zznode1, zznode2 i nazwy klastra w ten sposób tworzenie zznode3 i dołączanie go do klastra jest proste, ponieważ węzeł nie jest przywoływany w klastrze. Mam nadzieję, że to pomaga.

Jim B.
źródło