Як зміна Windows SID впливає на SQL Server?


11

Наші адміністратори Windows виявили проблему з тим, як вони клонують сервери Windows. Мабуть, деякі з клонованих серверів закінчуються тим самим SID на рівні ОС. Я чую, що Microsoft не підтримує сервери, які мають дублікати SID. Тому SID на цих серверах потрібно змінити.

Мені цікаво, як це впливає на SQL Server. Будь-які ідеї? Як це впливає на кластерні сервери баз даних?


Існує безліч причин не клонувати вікна, але SID не одна з них
Jim B

Відповіді:


9

Залиште SID у спокої. NewSID вийшов на пенсію, тому що Марк Русинович викопав копання і виявив, що цілий "дублікат SID == погано!" Лінія, яку ми всі барабанили в наші черепи протягом останнього десятиліття, - це просто безглуздя.

Дивіться останню запис у блоці Марка: Міф про дублювання машинного SID .


6

Я б точно рекомендував не змінювати SID, поки ви не прочитали: Зміна машини SID на NewSID Breaks SQL Server (І як це виправити)

Мабуть, деякі із клонованих серверів закінчуються тим самим SID на рівні ОС.

Я б ризикнув здогадатися, що всі ваші клоновані системи мають однаковий SID. GhostWalk може відновити SID для вас. Використання sysprep для початкового зображення клону може заощадити і в майбутніх системах.

Якщо ви встановили SQL Server, не змінюйте SID. Погані речі трапляться.


+1 для SysPrep, який підтримує AFAIK для таких сценаріїв.
Майкл Штум

1
-1 для того, щоб не згадувати, що будь-яка зміна sid не підтримується, включаючи sysprep, якщо встановлено sql.
Джим Б

Якщо сервер працює і має встановлені речі, то я б сказав, що ви досить шлангували. Ви повинні змінити SID, як тільки ви клонували сервер. Я вражений, що ви могли приєднати до домену два сервери з однаковим SID!
Нік Кавадіас

2

Ви можете використовувати sysinternals NewSID: http://technet.microsoft.com/en-us/sysinternals/bb897418.aspx

Змініть ім'я комп'ютера в 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

Потім перезапустіть службу сервера sql.


Дякуємо, що вказали на перейменування сервера sql вручну. Це часто забувають у клонах SQL (я клоную шахту з системою sprepre)
Опасний

2

Якщо ваша база даних здійснює віддалені транзакції за допомогою координатора розподілених транзакцій Microsoft, майте на увазі, що у клонованих машин також є той самий ідентифікатор MSDTC, який не є SID і не змінюється NewSID.

Ви побачите це у переглядачі подій:

Місцевий MS DTC виявив, що MS DTC на сервері має той самий унікальний ідентичність, що і локальний MS DTC. Це означає, що два MS DTC не зможуть спілкуватися один з одним. Ця проблема зазвичай виникає, якщо одну з систем клонували за допомогою непідтримуваних інструментів клонування. MS DTC вимагає клонування систем за допомогою підтримуваних інструментів клонування, таких як SYSPREP. Запуск 'msdtc -uninstall', а потім 'msdtc -install' з командного рядка вирішить проблему. Примітка. Якщо запустити 'msdtc -uninstall', система втратить всю інформацію про конфігурацію MS DTC.

Я вирішую це так:

msdtc -uninstall

Почекайте пару хвилин

msdtc -install
sc config msdtc start= auto
sc start msdtc

1
З якоїсь дивної причини "sc config" вимагає пробілу між "start =" та "auto", тобто "sc config msdtc start = auto".
ThatGraemeGuy

Спасибі - я мав там простір, але відредагував його, коли я розмістив повідомлення, що це помилка :)
crb

2

Використовуйте інструмент, що належить Microsoft NewSID або sysprep, який схожий на перевстановлення Windows без копіювання файлів.

Я не думаю, що ви можете приєднати два комп’ютери до одного домену з тим самим SID, тому я б сказав, що кластеризовані сервери SQL не становлять шансу, оскільки серверам потрібно бути в домені.


1

Єдиний підтримуваний спосіб клонування системи - за допомогою sysprep. Є купа причин, чому не клонувати сервер sql:

-Це не підтримується Microsoft CSS.

-SQL не буде працювати належним чином, поки його не перейменують.

-Якщо у вас є послуги звітності, вона також буде розміщена.

- Облікові записи системних та мережевих служб отримають нові SID та паролі, тому якщо ви використали їх як облікові записи служби, буде відчуватися біль.

-SQL Server створює декілька локальних груп з форматом. SQLServer2005MSSQLUser $$ MSSQLSERVER. Для їх перейменування не підтримується

Щоб виправити ситуацію, я б

Розбийте кластер, відновіть систему, встановіть SQL, створіть новий кластер, запустіть резервну копію на сервері, який не був перебудований - тоді зупиніть його, відновіть цю резервну копію на новий кластер, вкажіть додаток на новий кластер, відновіть решту сервер і додати його до нового кластеру

- альтернативно (можливо, простіше), чому б не створити новий сервер з новим іменем (це вирішить потенційні проблеми з SID будь-якого типу), а потім розірвати кластерну установку SQL, приєднати його до кластеру; Таким чином, немає простоїв і не потребує резервного копіювання / відновлення (хоча я б радив, що ви все-таки зробили це). Ми використовуємо zznode1, zznode2 та ім'я кластера, таким чином створюючи zznode3 та приєднуючи його до кластеру, просто, оскільки на вузол не посилається, коли він кластер. Сподіваюся, що це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.