Как изменение SID Windows влияет на SQL Server?

11

Наши администраторы Windows обнаружили проблему с тем, как они клонируют серверы Windows. Очевидно, что некоторые из клонированных серверов имеют одинаковый SID на уровне ОС. Я слышал, что Microsoft не поддерживает серверы с дублирующимися идентификаторами безопасности. Поэтому SID на этих серверах необходимо изменить.

Мне интересно, как это влияет на SQL Server. Есть идеи? Как это влияет на кластерные серверы баз данных?

Ра Осолаге
источник
Есть множество причин не клонировать окна, но SID не является одним из них
Джим Б.

Ответы:

9

Оставьте SID в покое. NewSID был удален, потому что Марк Руссинович немного покопался и обнаружил, что весь «дубликат SID == плох!» линия, которую мы все вбивали в наши черепа за последнее десятилетие или около того, это просто чепуха.

См. Последнюю запись в блоге Марка: Миф о дублировании SID машины .

ThatGraemeGuy
источник
6

Я определенно рекомендую не менять SID, пока не прочитаете: Изменение SID машины с помощью NewSID ломает 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 (я клонирую свой с помощью sysprep)
Precipitous
2

Если ваша база данных выполняет удаленные транзакции с использованием координатора распределенных транзакций Microsoft, имейте в виду, что клонированные машины также имеют тот же идентификатор MSDTC, который не является SID и не изменяется NewSID.

Вы увидите это в окне просмотра событий:

Локальный MS DTC обнаружил, что MS DTC на сервере SERVER имеет тот же уникальный идентификатор, что и локальный 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
CRB
источник
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 и присоединить его к кластеру просто, поскольку на узел не ссылаются в кластере. Надеюсь, это поможет.

Джим Б
источник