¿Cómo afecta el cambio de SID de Windows a SQL Server?

11

Nuestros administradores de Windows han identificado un problema con la forma en que clonan los servidores de Windows. Aparentemente, algunos de los servidores clonados terminan con el mismo SID en el nivel del sistema operativo. Escuché que Microsoft no admite servidores que tienen SID duplicados. Por lo tanto, los SID en estos servidores deben cambiarse.

Tengo curiosidad por cómo eso afecta a SQL Server. ¿Algunas ideas? ¿Cómo afecta a los servidores de bases de datos en clúster?

Ra Osolage
fuente
Hay muchas razones para no clonar ventanas, pero el SID no es una de ellas
Jim B

Respuestas:

9

Deje el SID solo. NewSID se retiró porque Mark Russinovich hizo algunas excavaciones y descubrió que todo el "SID duplicado == ¡malo!" La línea que todos hemos tocado en nuestros cráneos en la última década es una tontería.

Vea la última entrada de blog de Mark: The Machine SID Duplication Myth .

ThatGraemeGuy
fuente
6

Definitivamente recomendaría no cambiar el SID, hasta después de leer: Cambiar el SID de la máquina con NewSID rompe SQL Server (y cómo solucionarlo)

Aparentemente, algunos de los servidores clonados terminan con el mismo SID en el nivel del sistema operativo.

Me arriesgaría a adivinar que TODOS sus sistemas clonados tienen el mismo SID. GhostWalk puede regenerar SID por usted. El uso de sysprep en su imagen de clonación inicial también podría ahorrarle en sistemas futuros.

Si instaló SQL Server NO CAMBIE EL SID. Cosas malas sucederán.

Joseph Kern
fuente
+1 para SysPrep, que es AFAIK, la solución compatible para tales escenarios.
Michael Stum
1
-1 por no mencionar que ningún cambio de sid no es compatible, incluido sysprep, si sql está instalado.
Jim B
Si el servidor se ha estado ejecutando y tiene cosas instaladas, entonces diría que eres bastante flexible. Se supone que debe cambiar el SID tan pronto como haya clonado el servidor. ¡Me sorprende que pueda unir dos servidores con el mismo SID al dominio!
Nick Kavadias
2

Puede usar sysinternals NewSID: http://technet.microsoft.com/en-us/sysinternals/bb897418.aspx

Cambie el nombre de la computadora en 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

Luego reinicie el servicio del servidor sql.

Dave
fuente
Gracias por señalar el cambio de nombre manual del servidor SQL. A menudo se olvida en clones de SQL (I clon mío con sysprep)
En la escarpada
2

Si su base de datos realiza transacciones remotas utilizando el Coordinador de transacciones distribuidas de Microsoft, tenga en cuenta que las máquinas clonadas también tienen el mismo ID de MSDTC, que no es el SID y que NewSID no cambia.

Verá esto en el Visor de eventos:

El MS DTC local detectó que el MS DTC en el SERVIDOR tiene la misma identidad única que el MS DTC local. Esto significa que los dos MS DTC no podrán comunicarse entre sí. Este problema generalmente ocurre si uno de los sistemas se clonó utilizando herramientas de clonación no compatibles. MS DTC requiere que los sistemas se clonen usando herramientas de clonación compatibles como SYSPREP. Ejecutar 'msdtc -uninstall' y luego 'msdtc -install' desde el símbolo del sistema solucionará el problema. Nota: Al ejecutar 'msdtc -uninstall', el sistema perderá toda la información de configuración de MS DTC.

Lo resuelvo así:

msdtc -uninstall

Espera un par de minutos y luego

msdtc -install
sc config msdtc start= auto
sc start msdtc
crb
fuente
1
Por alguna extraña razón, "sc config" requiere un espacio entre "start =" y "auto", es decir, "sc config msdtc start = auto".
ThatGraemeGuy
Gracias. Tenía ese espacio allí, pero lo
edité cuando publiqué
2

Use la herramienta ahora propiedad de Microsoft NewSID o sysprep, que es como reinstalar Windows sin toda la copia del archivo.

No creo que pueda unir dos computadoras al mismo dominio con el mismo SID, por lo que diría que los servidores SQL agrupados no tendrían ninguna posibilidad, ya que los servidores deben estar en un dominio.

Nick Kavadias
fuente
1

La única forma compatible de clonar un sistema es con sysprep. Hay muchas razones por las cuales no clonar un servidor SQL:

-No es compatible con Microsoft CSS.

-SQL no funcionará correctamente hasta que sea "renombrado".

-Si tiene servicios de informes, también se aplicarán mangueras.

-Las cuentas del sistema y del servicio de red obtendrán nuevos SID y contraseñas, por lo que si los ha utilizado como cuentas de servicio, habrá algunos problemas.

-SQL Server crea unos pocos grupos locales con el formato. SQLServer2005MSSQLUser $$ MSSQLSERVER. No se admite cambiar el nombre de estos

Para rectificar la situación, yo ...

Rompa el clúster, reconstruya el sistema, instale SQL, cree un nuevo clúster, ejecute una copia de seguridad en el servidor que no ha sido reconstruido, luego deténgalo, restaure esa copia de seguridad en el nuevo clúster, apunte la aplicación al nuevo clúster, reconstruya el resto servidor y agregarlo al nuevo clúster

- alternativamente (probablemente más fácil) por qué no construir un nuevo servidor con un nuevo nombre (esto resolverá posibles problemas con SID de cualquier tipo) y luego romper el clúster, instalar SQL, unirlo al clúster, conmutar por error a esa casilla y luego repetir el proceso Sin tiempo de inactividad y sin necesidad de copia de seguridad / restauración (aunque sugeriría que lo hiciera de todos modos). Usamos zznode1, zznode2 y un nombre de clúster de esa manera, crear zznode3 y unirlo al clúster es simple ya que el nodo no está referenciado cuando está en el clúster. Espero que ayude.

Jim B
fuente