Como reduzir o banco de dados tempdb no SQL Server

Traduções deste artigo Traduções deste artigo
ID do artigo: 307487 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo discute três métodos que você pode usar para reduzir o banco de dados tempdb para um tamanho menor do que o último tamanho configurado. O primeiro método oferece total controle do tamanho dos arquivos tempdb. No entanto, o primeiro método exige a reinicialização do Microsoft SQL Server. O segundo método é reduzido ao banco de dados tempdb e você poderá precisar reiniciar o SQL Server. O terceiro método permite você reduzir os arquivos individuais no banco de dados tempdb. Os dois últimos métodos exigem que nenhuma atividade possa ocorrer no banco de dados tempdb durante a operação de redução.

Observação Se você estiver usando o SQL Server 2005, estes métodos também se aplicam. Entretanto, você deve usar o SQL Server Management Studio ao invés do Enterprise Manager e o Analisador de Consultas para realizar estas operações. Além disso, observe que o SQL Server Management Studio no SQL Server 2005 não exibe o tamanho correto dos arquivos tempdb depois da operação de redução. O valor "Espaço alocado atualmente" é sempre obtido do sys.master_files DMV e este valor não é atualizado depois de uma operação de redução ocorrer no banco de dados tempdb. Para encontrar o tamanho correto dos arquivos tempdb depois de uma operação de redução, execute a seguinte declaração no SQL Server Management Studio:
use tempdb
selecione (tamanho*8) como FileSizeKB do sys.database_files

Observação O SQL Server 2008 não é afetado pelo problema de que o tamanho incorreto dos arquivos tempdb é exibido após uma operação de redução. 

Informações sobre o Tempdb

O tempdb é um espaço de trabalho temporário. Entre outros usos, o SQL Server usa o tempdb para realizar o seguinte:
  • Armazenar tabelas temporárias criadas explicitamente
  • Tabelas de trabalho que possuem resultados intermediários criados durante o processo e classificação da consulta
  • Cursores estáticos materializados
O SQL Server registra somente informações suficientes no log de transação tempdb para reverter uma transação, mas não refaz transações durante a recuperação do banco de dados. Este recurso aumenta o desempenho das instruções INSERT no tempdb. Além disso, você não tem os informações do log para refazer qualquer transação porque o tempdb é recriado toda vez que você inicia o SQL Server. No entanto, ele não tem transações para rolar para frente ou para reverter. Quando o SQL Server inicia, o tempdb é recriado usando uma cópia do banco de dados modelo e o tempdb é reiniciado para seu último tamanho configurado.

Por padrão, o banco de dados tempdb é configurado para o crescimento automático conforme necessário. Portanto, esse banco de dados pode aumentar com o tempo para um tamanho maior do que o tamanho desejado. Uma reinicialização simples do SQL Server redefine o tamanho do tempdb para o seu último tamanho configurado. O tamanho configurado é o último tamanho explícito definido usando uma operação de mudança de tamanho do arquivo como ALTER DATABASE que usa opção MODIFY FILE ou a instrução DBCC SHRINKFILE.

Você pode usar os seguintes três métodos para reduzir o tempdb para um tamanho que é menor do que o tamanho configurado.

Método 1: Use os comandos Transact-SQL

Método 2: Use o comando DBCC SHRINKDATABASE

Método 3: Use o comando DBCC SHRINKFILE

Efeitos da execução do DBCC SHRINKDATABASE ou DBCCSHRINKFILE enquanto o tempdb estiver em uso

Se o tempdb está em uso e você tentar reduzi-lo usando os comandos DBCC SHRINKDATABASE ou DBCC SHRINKFILE, é possível receber vários erros de consistência similares ao tipo seguinte e a operação de redução pode falhar:
  • Servidor: Mensagem 2501, Nível 16, Estado 1, Linha 1 não pode encontrar a tabela nomeada '1525580473'. Verificar sysobjects.
  • Servidor: Mensagem 8909, Nível 16, Estado 1, Linha 0 Tabela Corrompida: Objeto ID 1, índice ID 0, página ID %S_PGID. A PageId no cabeçalho da página = %S_PGID.
Apesar do erro 2501 poder não indicar qualquer corrupção no tempdb, este erro causa falha na operação de redução. Por outro lado, o erro 8909 pode indicar corrupção no banco de dados do tempdb. Reinicie o SQL Server para recriar o tempdb e limpar os erros de consistência. Entretanto, esteja ciente de que pode haver outras razões para erros de corrupção de dados físicos como o erro 8909 e eles incluem problemas de subsistema de entrada/saída.

REFERÊNCIAS

Manuais Online do SQL Server; tópicos: "DBCC SHRINKFILE"; "DBCC SHRINKDATABASE"

Propriedades

ID do artigo: 307487 - Última revisão: quarta-feira, 8 de janeiro de 2014 - Revisão: 6.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Palavras-chave: 
kbsqlsetup kbhowtomaster KB307487

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com