Alterando parâmetros de startup inseridos incorretamente em um cluster SQL Server 2000 ou 2005.


 Se a edição dos parâmetros de startup impedir uma instância do SQL Server de localizar os arquivos que compõe o master / model / tempdb ela não inicia, seja stand-alone ou em cluster. Em uma instância SQL Server stand-alone não teríamos grandes problemas em acertar os parâmetros, contudo em uma instância cluster o acerto não é muito simples de se fazer devido a um processo do cluster conhecido como registry checkpoint.

 O registry checkpoint serve para garantir que determinadas chaves usadas por um recurso do cluster estejam sempre em sincronia entre todos nós do mesmo.  A indicação das chaves a serem protegidas por este processo parte dos próprios recursos durante o setup.  

 Uma característica do registry checkpoint é que uma nova marca de verificação somente pode ser criada nas chaves protegidas quando o respectivo recurso do cluster está no ar. Se você editar os parâmetros de startup, e esta edição impede a instância de iniciar, qualquer tentativa de editar diretamente as chaves protegidas do registry irá falhar, porque os valores utilizados são obtidos da última marca gerada quando a instância estava online, não importa que estes valores estão incorretos.

Simulando o problema 

 No meu exemplo abaixo, perceba que logo após o caminho que aponta o arquivo “ldf” da base de dados de sistema “master" eu inseri propositalmente um “trace flag” sem utilizar o divisor “;”: 
 Veja o que acontece quando eu tento subir o serviço do SQL Server:
Olhando no ERRORLOG:
 Ah ok! O SQL Server não está conseguindo abrir o arquivo “ldf” da “master” chamado “master.ldf-T1118, realmente o arquivo não tem este nome, vamos tentar corrigir então? Entrando no Configuration manager eu vou inserir o divisor “;” entre o arquivo da “master" o “trace flag”: 
 
 Ok, isto para uma instalação “stand-alone” resolveria, contudo no cluster, abrindo o ERRORLOG veja que interessante, nós mudamos no “Configuration manager” porém ele continua registrando a mesma coisa de antes:
 Vamos voltar ao “Configuration manager”, ao verificar como estão os parâmetros veja que estranho, o que nós havíamos alterado ele desconsiderou e manteve o que estava antes: 
  

Resolvendo o problema 

Bom para resolver este problema, nós temos que desproteger uma chave no “registry” através do comando que estou passando abaixo. Rode o mesmo a partir de um prompt elevado: 

cluster res "SQL Server (Instancename)" /removecheck: "Software\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLSERVER"

  Se o procedimento for bem sucedido você verá a seguinte mensagem: 

Repita agora o procedimento de correção dos parâmetros de inicialização no “Configuration Manager” e tente agora subir o serviço do SQL Server...

Pronto! O serviço voltou a funcionar! Agora vamos proteger o registry novamente com o seguinte comando: 

cluster res "SQL Server (Instancename)" /addcheck: "Software\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLSERVER"
 Se o procedimento for bem sucedido você verá a seguinte mensagem:
 Neste post simulei o problema e mostrei os procedimentos de correção para uma instância cluster do SQL Server 2005, consulte o link oficial abaixo sobre o problema para realizar os procedimentos para instâncias default do SQL Server 2005 e para instalações do SQL Server 2000: 


SQL SERVER 2008 e posteriores. 

No SQL Server 2008 e versões posteriores o checkpoint é feito no nível do network name, isto significa que se o problema ocorrer a correção pode ser feita sem desproteger as chaves do registry. O artigo abaixo contém algumas considerações adicionais para o SQL Server 2008 / 2008 R2: 


Para dificultar a introdução de erros nos parâmetros de startup, o SQL Server 2012 trouxe de volta um artifício parecido com o do Enterprise Manager do SQL Server 2000, no SQL Configuration Manager existe uma aba que permite que os parâmetros sejam inseridos um por vez, e não mais editados numa única linha, como era feito desde o SQL Server 2005:
 
Espero que o post tenha sido útil a vocês!
Um abraço!

Nenhum comentário:

Postar um comentário