AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 11284
Accepted
Komal
Komal
Asked: 2011-07-05 22:13:24 +0800 CST2011-07-05 22:13:24 +0800 CST 2011-07-05 22:13:24 +0800 CST

tempdb no servidor sql

  • 772

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:

  1. log de backup tempdb comtruncate_only
  2. dump tran tempdb com no_log;
  3. reduza o banco de dados.
sql-server transaction-log
  • 4 4 respostas
  • 5500 Views

4 respostas

  • Voted
  1. Best Answer
    rsbarro
    2011-07-05T22:21:10+08:002011-07-05T22:21:10+08:00

    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 Simplemodelo de recuperação. Se por algum motivo você não estiver usando o Simplemodelo 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:

    sp_helpdb
    

    Verifique os resultados de tempdbe certifique-se de que a statuscoluna de tempdbmostre algo como:

    Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=SIMPLE, ...
    

    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):

    ALTER DATABASE tempdb MODIFY FILE (NAME = templog, SIZE = 50MB)
    

    Você pode tentar aumentar o tamanho do arquivo de log para ver se isso ajuda.

    • 4
  2. niktrs
    2011-07-05T23:45:32+08:002011-07-05T23:45:32+08:00

    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

    • 1
  3. Dave Long
    2011-07-05T22:18:22+08:002011-07-05T22:18:22+08:00

    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:

    USE DatabaseName
    GO
    ALTER DATABASE [DBName] SET RECOVERY SIMPLE WITH NO_WAIT
    DBCC SHRINKFILE([DBName_log], 1)
    ALTER DATABASE [DBName] SET RECOVERY FULL WITH NO_WAIT
    GO
    

    Espero ter ajudado, Davi

    • 0
  4. sudheshna
    2011-07-05T22:22:48+08:002011-07-05T22:22:48+08:00

    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

    • 0

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve