SQL Server não inicia: “Could not Create TempDB”

Hoje meu colega Glauco Carvalho e eu encontramos um erro no serviço do SQL Server de um cliente, e ao buscarmos a causa do erro identificamos a mensagem de erro:

Could not create tempdb. You may not have enough disk space available. Free additional disk space by deleting other files on the tempdb drive and then restart SQL Server. Check for additional errors in the event log that may indicate why the tempdb files could not be initialized.“.

Esse erro ocorre porque o database MODEL está em estado de restoring: “(The database ‘model’ is marked RESTORING and is in a state that does not allow recovery to be run.Could not create tempdb.)“.

Para resolver o problema, execute os seguinte procedimentos:

1 – Abra o prompt do DOS e vá até o diretório de instalação dos binários do SQL Server, provavelmente em X:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn (onde X: representa a letra da unidade onde estão os binários do SQL Server) e execute o seguinte comando:

sqlservr.exe -sInstanceName -T3608 -c -f -T3609

2 – Abra outro prompt do DOS, navegue até o diretório dos binários do SQL e digite o comando:

sqlcmd -e

3 – Digite o comando:

Use Master
go
sp_detach_db ‘Model’
go

4 – Após desanexar o banco Model, copie os arquivos .MDF e .LDF do mesmo banco que existe no diretório Templates (X:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\Templates) para o diretório onde estão os datafiles. Como o banco Model é utilizado apenas como modelo para criação de novos bancos, e consequentemente sofre poucas alterações, não haverá problemas em utilizar um novo banco. Se não quiser usar os arquivos do diretórios Templates, pode ser copiado de outro servidor com a mesma build do SQL Server.

5 – execute o comando:

Create database [model] on (filename=’X:\Caminho_diretorio_datafiles\Model.mdf’),
(filename=’X:\Caminho_diretorio_datafiles\Modellog.ldf’) for attach
go

Após executar o comando, será exibida a tela abaixo:

create_model

Após executar os comandos acima, pode realizar o restart do serviço do SQL Server, através do SQL Server Configuration Manager, que a instância irá subir sem problemas.

Uma observação, a procedure sp_detach_db funcionou, porém ao utilizar a procedure sp_attach_db, para anexar o database, ocorreu erro. Possivelmente haja incompatibilidade, já que a Microsoft informa que a procedure será descontinuada e recomenda utilizar o CREATE DATABASE FOR ATTACH

Abraços e até a próxima.

Anúncios

Um comentário sobre “SQL Server não inicia: “Could not Create TempDB”

  1. Pingback: Alterando o Local do TempDb | Alex Souza

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s