Como a alteração do SID do Windows afeta o SQL Server?

11

Nossos administradores do Windows identificaram um problema com a maneira como clonam os servidores Windows. Aparentemente, alguns dos servidores clonados terminam com o mesmo SID no nível do SO. Ouvi dizer que a Microsoft não suporta servidores com SIDs duplicados. Portanto, os SIDs nesses servidores precisam ser alterados.

Estou curioso para saber como isso afeta o SQL Server. Alguma ideia? Como isso afeta os servidores de banco de dados em cluster?

Ra Osolage
fonte
Existem carradas de razões para não janelas clone mas o SID não é um deles
Jim B

Respostas:

9

Deixe o SID em paz. O NewSID foi aposentado porque Mark Russinovich pesquisou um pouco e descobriu que todo o "SID duplicado == ruim!" A linha que todos nós tocamos em nossos crânios na última década é mais ou menos uma bobagem.

Veja a mais recente entrada de blog de Mark: The Machine SID Duplication Myth .

ThatGraemeGuy
fonte
6

Eu recomendaria definitivamente contra a mudança do SID, até depois de ler: Mudando Máquina SID Com NewSID Breaks SQL Server (e How To Fix It)

Aparentemente, alguns dos servidores clonados acabam com o mesmo SID no nível do SO.

Eu arriscaria adivinhar que TODOS os seus sistemas clonados têm o mesmo SID. O GhostWalk pode gerar novamente SIDs para você. Usar o sysprep na sua imagem inicial do clone também pode economizar em sistemas futuros.

Se você instalou o SQL Server, NÃO MUDE O SID. Coisas ruins vão acontecer.

Joseph Kern
fonte
+1 no SysPrep, que é AFAIK a solução suportada para esses cenários.
Michael Stum
1
-1 por não mencionar que nenhuma alteração lateral não é suportada, incluindo o sysprep, se o sql estiver instalado.
Jim B
Se o servidor estiver rodando e tiver coisas instaladas, então eu diria que você é bem manejado. Você deveria alterar o SID assim que você clonou o servidor. Estou surpreso que você possa ingressar em dois servidores com o mesmo SID no domínio!
Nick Kavadias
2

Você pode usar o sysinternals NewSID: http://technet.microsoft.com/en-us/sysinternals/bb897418.aspx

Mude o nome do computador no 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

Em seguida, reinicie o serviço do servidor sql.

Dave
fonte
Obrigado por apontar a renomeação manual do servidor sql. É muitas vezes esquecido em clones SQL (I clonar o meu com sysprep)
Precipitous
2

Se o seu banco de dados fizer transações remotas usando o Microsoft Distributed Transaction Coordinator, lembre-se de que as máquinas clonadas também têm o mesmo MSDTC ID, que não é o SID e não é alterado pelo NewSID.

Você verá isso no Visualizador de Eventos:

O MS DTC local detectou que o MS DTC no SERVER possui a mesma identidade exclusiva que o MS DTC local. Isso significa que os dois MS DTC não poderão se comunicar. Esse problema geralmente ocorre se um dos sistemas foi clonado usando ferramentas de clonagem não suportadas. O MS DTC exige que os sistemas sejam clonados usando ferramentas de clonagem suportadas, como SYSPREP. Executar 'msdtc -uninstall' e 'msdtc -install' no prompt de comando corrigirá o problema. Nota: A execução de 'msdtc -uninstall' resultará na perda de todas as informações de configuração do MS DTC.

Eu resolvo assim:

msdtc -uninstall

Aguarde alguns minutos, então

msdtc -install
sc config msdtc start= auto
sc start msdtc
crb
fonte
1
Por alguma razão estranha, "sc config" requer um espaço entre "start =" e "auto", ou seja, "sc config msdtc start = auto".
ThatGraemeGuy
Graças - eu tinha que o espaço lá, mas editado-lo para fora quando eu postei pensando que era um erro de digitação :)
crb
2

Use a ferramenta NewSID ou sysprep, agora da Microsoft , que é como reinstalar o Windows sem a cópia de todos os arquivos.

Eu não acho que você possa associar dois computadores ao mesmo domínio com o mesmo SID, então eu diria que os SQL Servers em cluster não teriam chance, já que os servidores precisam estar em um domínio.

Nick Kavadias
fonte
1

A única maneira suportada de clonar um sistema é com o sysprep. Há várias razões pelas quais não clonar um servidor sql:

-Não é suportado pelo Microsoft CSS.

-SQL não funcionará corretamente até que seja "renomeado".

-Se você tiver serviços de relatório, eles também serão processados.

-As contas do sistema e do serviço de rede receberão novos SID e senhas; portanto, se você os tiver usado como contas de serviço, haverá alguma dor.

O SQL Server cria alguns bons grupos locais com o formato. SQLServer2005MSSQLUser $$ MSSQLSERVER. Não há suporte para renomear esses

Para corrigir a situação, eu gostaria de

Quebre o cluster, reconstrua o sistema, instale o SQL, crie um novo cluster, execute um backup no servidor que não foi reconstruído; em seguida, pare-o, restaure esse backup no novo cluster, aponte o aplicativo para o novo cluster, reconstrua o restante servidor e adicione-o ao novo cluster

- alternativamente (provavelmente mais fácil), por que não criar um novo servidor com um novo nome (isso resolverá possíveis problemas com o SID de qualquer tipo) e depois interromperá o SQL de instalação do cluster, junte-o ao cluster, faça failover para essa caixa e repita o processo, maneira sem tempo de inatividade e sem necessidade de backup / restauração (embora eu sugira que você fez de qualquer maneira). Usamos zznode1, zznode2 e um nome de cluster para criar o zznode3 e associá-lo ao cluster é simples, pois o nó não é referenciado no cluster. Espero que ajude.

Jim B
fonte