Home > Administração > Trouble shooting da TempDB SQL Server

Trouble shooting da TempDB SQL Server

Esse procedimento é dedicado ao meu amigo Jeferson Kiocia  que me  ensinou muitas coisas, sobre windows, Contadores de Performance, Infra,Storage e etc.. Na verdade ele me disse: “Faz um procedimento sobre algo quando “Ferrar” o disco da TempDB! Quando der uma M…. Você tem que ter a solução rápido”. E aqui estamos. Fica a dica: Sempre documente os procedimentos, mesmo, que ainda não tenha acontecido. Porque quando acontecer, você será cobrado e a dor de cabeça será tremenda e ainda você pode ouvir “Se você sabia que isso poderia acontecer, porque não fez um procedimento?”.

Quando usar este procedimento?

O procedimento deve ser usando quando o array que hospeda a tempdb falhar(Nunca deveria acontecer, leia no final do post). Quando isso acontece o SQL Server retorna um erro,pois, o caminho onde a tempdb estava não foi encontrado.

Cenário: Imagine um cenário que temos a tempdb em um disco de nome S, conforme print:

E esse disco falhou ou a letra não é mais a mesma(se você trocou a letra depois da falha). Quando o SQL Server iniciar na próxima vez ele retornará as seguintes mensagens no Event Viewer:

Erro:1

Erro:2


Erro:3

Quando aparecer qualquer dessas mensagens, que dizer que a tempdb não foi encontrada. A solução para esse tipo de problema é: Se conectar ao SQL Server via prompt de comando e alterar o arquivo da tempdb de unidade. Vá até a a pasta aonde encontra-se os binários do SQL Server.

Você deve acessar esse caminho via promt de comand, conforme print:

Digite a linha de comando abaixo para inicar o SQL Server pelo prompt.

Sqlservr.exe -f -m -sNomeDaInstancia

O print mostra a linha digitada:

Obs: O SQL Server Agent deve estar desabilitado para a execução desta linha de comando. Se o SQL Server estiver ativo, você não conseguirá usar o SQL em single user mode. Os parâmetros são explicados abaixo:
f ? Executa o sql server com as configurações minimas.
m ? Entra no sql server em single user mode.
s ? Nome da instancia do sql server. Esse nome pode ser obtido no SQL Server Configuration Manager.

Nome da Instancia.

Com o SQL Server iniciado no prompt que foi aberto:

Quando o SQL Server é inicado desta maneira, a tempdb por default vai para o diretorio de bases de dados padrão do SQL Server de instalação(aonde encontra-se a master, model e msdb). Abra um novo prompt do MS-DOS e use um utilitário de linha de comando para mudar a tempdb de diretório. Use a linha de comando abaixo:

osql.exe -E -sNomeDaInstancia

Conforme o print abaixo:

Obs: O parâmetro -E é a conexão trusted (integrada com o windows), o usuário que está executando este procedimento deve ter permissões de SA no SQL Server. Neste exemplo usamos o login TMKTSQLSVC que é uma conta do windows com permissões de SA.

Após conectado ao SQL Server, execute os comandos abaixo para modificar a tempdb para a nova unidade.

USE MASTER
GO
ALTER DATABASE tempdb MODIFY FILE
(NAME= tempdev, FILENAME= ‘F:/MSSQL2005/MSSQL/SYS_DBS/DATA/tempdb.mdf’)
GO
ALTER DATABASE tempdb MODIFY FILE
(NAME= templog, FILENAME= ‘F:/MSSQL2005/MSSQL/SYS_DBS/LOG/templog.ldf’)

O SQL Server retorna a mensagem que os arquivos da tempdb serão movidos após a próxima reinicialização do serviço do SQL Server.

Digite exit na janela aonde você digitou os comandos e aperte a tecla enter.
Na outra janela de prompt que está em aberta pressione CTRL C aparecerá uma mensagem solicitando confirmação se você deseja fazer o shutdown do SQL Server.

Pressione a tecla Y.

Inicie o SQL Server normalmente.

Após o procedimento o SQL Server deve subir normalmente.

Obs: Leitura no final do post: A tempdb sempre deve estar em um disco que oferece redundância, de preferência um disco com alta velocidade para escrita e leitura(RAID 10). Esse procedimento foi criado em um ambiente onde a tempdb estava em um RAIDO.

Espero ter ajudado.
Abssssss

  1. No comments yet.
  1. September 6, 2012 at 3:38 pm

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: