Usando o SQL Server 2000, estou recebendo o seguinte erro.
O arquivo de log do banco de dados 'tempdb' está cheio. Faça backup do log de transações do banco de dados para liberar algum espaço de log."
Como resolver isso? Não consigo fazer backup do tempdb.
Eu tentei todas as opções como:
- log de backup tempdb com
truncate_only
- dump tran tempdb com
no_log
; - reduza o banco de dados.
Você pode querer considerar apenas configurar o modelo de recuperação para tempdb como
Simple
. Isso deve resolver o problema que você está tendo, pois recuperará todo o espaço usado no log de transações para tempdb. A documentação do MSDN também sugere definir o modelo de recuperação para tempdb como Simples por motivos de desempenho.MSDN: http://msdn.microsoft.com/en-us/library/ms175527.aspx
EDIT
De acordo com a documentação , para SQL Server 2005 - 2008 R2, não é possível fazer backup do tempdb e sempre deve ser definido para o
Simple
modelo de recuperação. Se por algum motivo você não estiver usando oSimple
modelo de recuperação para tempdb, sugiro mudar para ele.EDIT 2
Apenas para ter certeza de que o modelo de recuperação para tempdb está definido como Simples, execute o seguinte procedimento armazenado:
Verifique os resultados de
tempdb
e certifique-se de que astatus
coluna detempdb
mostre algo como:Em caso afirmativo, seu problema pode estar relacionado às operações que você está executando. Você está tentando gravar transacionalmente em uma tabela temporária? Você tem transações abertas que não estão sendo fechadas? Existe uma operação em particular que está travando ou tudo não funciona? Você pode querer verificar as respostas para esta pergunta semelhante em serverfault para mais algumas ideias. Para encurtar a história, se você ainda estiver recebendo esse erro depois de definir o modelo de recuperação como simples, começaria a examinar as operações que está tentando executar como um possível culpado.
EDIT 3
A partir da saída
DBCC SQLPERF (LOGSPACE)
, parece que seu arquivo de log tempdb tem apenas 1,24 MB, o que parece desnecessariamente pequeno para mim. Você pode aumentar o tamanho do arquivo de log usando o Enterprise Manager ou deve ser capaz de usar o seguinte SQL (embora talvez seja necessário procurar o nome do arquivo de log verificando os arquivos em tempdb):Você pode tentar aumentar o tamanho do arquivo de log para ver se isso ajuda.
Como seu modelo de recuperação é simples, verifique o crescimento automático do arquivo de log tempdb. Defina-o para crescimento de arquivo irrestrito. Certifique-se também de que "Ativar crescimento automático" esteja marcado
Há um artigo da Microsoft
http://support.microsoft.com/kb/307487
Verifique também se reiniciar o servidor SQL resolve seu problema no momento
Se o seu banco de dados for 2005 ou 2000, você pode usar isto: http://www.codeproject.com/KB/database/ShrinkingSQLServerTransLo.aspx
Se for 2008, você pode usar as seguintes declarações:
Espero ter ajudado, Davi
Os seguintes links podem ajudar:
http://blog.sqlauthority.com/2007/04/01/sql-server-tempdb-is-full-move-tempdb-from-one-drive-to-another-drive/
http://web.archive.org/web/20150116150813/https://web.archive.org/web/20080509095429/http://sqlserver2000.databases.aspfaq.com:80/why-is-tempdb-full- e-como-posso-impedir-que-isso-aconteça.html