locked
Tempdb RRS feed

  • Pergunta

  • Gostaria de saber se existe algum procedimento para diminuir o tamanho do banco Tempdb, se que seja preciso parar o serviço do SQL Server 2000

    Grato,

     

    quarta-feira, 8 de novembro de 2006 18:57

Respostas

  • Olá Fernando e colegas do TechNet,

    Fernando, conforme o Marcelo informou, voce pode sim diminuir o tamanho do tempdb sem precisar parar e reiniciar o SQL. Voce pode fazer isso com o shrinkfile para cada um dos arquivos do tempdb.

    Para diminuir o tamanho do arquivo de dados do tempdb para 50MB, por exemplo, voce pode utilizar o comando:

    USE TEMPDB

    GO

    DBCC SHRINKFILE (tempdev, 50)

    Para diminuir o tamanho do arquivo de log do tempdb para 5MB, voce pode utilizar o comando:

    USE TEMPDB

    GO

    DBCC SHRINKFILE (templog, 5)

    O shrinkfile utiliza o nome logico do arquivo de dados do banco. Se voce nao criou nenhum novo arquivo de dados ou log para o tempdb depois que instalou o SQL, seu tempdb deve possuir somente estes dois arquivos, o tempdev (dados) e o templog (log). Para saber se seu tempdb possui mais arquivos de dados, ou para obter o nome logico dos arquivos de dados do tempdb voce pode utilizar o comando:

    SP_HELPDB TEMPDB

    As unicas situações em que voce pode executar o shrinkfile e o arquivo nao diminuir de tamanho são duas:

    1. Se o arquivo estiver com dados

    2. Se um aplicativo estiver executando comandos no banco que facam uso do tempdb

    Assim, se seus arquivos do tempdb estao vazios e se nenhum usuario ou processo esta utilizando o banco, voce deve conseguir diminuir o tamanho do tempdb com o shrinkfile.

    Espero que tenha conseguido esclarecer.

    Qualquer duvida, retorne.

    Abs,

    terça-feira, 14 de novembro de 2006 11:39

Todas as Respostas

  • vc pode utilizar o

    DBCC SHRINKFILE('nomearquivo', truncateonly)

     

    mas se seu tempdb tiver com dados ele não vai truncar.... o que vc deve fazer é toda vez que utilizar um objeto temporario.. dar um drop no objeto

     

    abs

     

    quarta-feira, 8 de novembro de 2006 19:08
  • Tente fazer um backup completo do tempdb e depois o shrink, isso deve funcionar...
    quinta-feira, 9 de novembro de 2006 15:55
  • nao precisa fazer backup da tempdb nao, ate porque o recovery model de db de sistema e sempre simple, pode fazer so o shirnkfile direto no arquivo de dados.

     

    quinta-feira, 9 de novembro de 2006 17:13
  • Celso,

    Quando você faz backup de uma base de dados, mesmo sem Full o arquivo de log, não é limpo, consequentemente o tamanho do banco não diminui.

    Mas por padrão banco de dados do sistema como por exemplo o TempDB o recovery Model é Simple, desta forma, não é feito o log da forma que um banco de dados com recovery full faz.

    quinta-feira, 9 de novembro de 2006 18:42
    Moderador
  • valeu pela dica manos... obrigado!
    sexta-feira, 10 de novembro de 2006 13:08
  • Ok, pessoal, quanto ao truncate dos logs eu fiz e está OK, mas o que está crescendo com uma frequencia estranha é o Tempdb.mdf(Arquivo da Base), Chega algumas vezes a 6GB. O Procedimento que uso para diminuir essa base é parar o serviço SQL e subir novamente, este arquivo volta com o tamanho bem reduzido + - 250MB,  não sei outra forma de diminuir o tamanho desta Base.

     

    sexta-feira, 10 de novembro de 2006 19:30
  • Mano olha este artigo , isto serve como base para todos teus BDS, da uma verificada , como o pessoal falou a opção de crescimento do seu BD se estar (full,simples....) :

    http://www.andersonpatricio.org/Tutoriais/Tutoriais.asp?Tut=311

    sábado, 11 de novembro de 2006 01:18
  • Ok, o modelo de recuperação do meu banco está em Simples, para que seja possível a habilitação do Auto Shrink, este modelo deve estar em full u bulked-log. Qual o impacto da alteração desta opção para o modelo FULL?
    segunda-feira, 13 de novembro de 2006 17:12
  •  

     

     a tembdb e os bancos de sistema pode default estao em simple e nao podem ser alterados a menos que vc. habilita updates em tabelas de sistema ......

     

    Abs;

    segunda-feira, 13 de novembro de 2006 17:24
  • Fernando,

    Quando você mudar o recovery model do seu banco para Full, com certeza o crescimento do seu banco será maior, pois este tipo de recovery armazenar o todo o log de transações realizadas em seu banco de dados, trata-se do recovery model indicado para evitar perda de informações.

    Já Bulked Log, é muito similar ao Full, é mais recomendado utilizado quando a sua base de dados possui um número elevado de registros, seu processo de backup é muito rápido, possui um arquivo de log muito menor em relação ao Full.

    Este recovery model não permiti a restauração de um log de banco de dados até um determinado momento(data ou hora), e principalmente não armazena em log as transações realizadas pelos operadores bulk.

    segunda-feira, 13 de novembro de 2006 18:39
    Moderador
  • Ok, então a única forma que tenho para diminuir o tamanho deste banco TEMPDB, é parando o serviço do SQL e startando novamente, visto que o recovery model é simples(não posso executar um shrink database).
    segunda-feira, 13 de novembro de 2006 19:06
  •  

     

     use um srhinkfile

     

     dbcc srhinkfile .... veja no books on line a referencia qualquer coisa retorne.

     

    Abs.

    segunda-feira, 13 de novembro de 2006 23:29
  • Olá Fernando e colegas do TechNet,

    Fernando, conforme o Marcelo informou, voce pode sim diminuir o tamanho do tempdb sem precisar parar e reiniciar o SQL. Voce pode fazer isso com o shrinkfile para cada um dos arquivos do tempdb.

    Para diminuir o tamanho do arquivo de dados do tempdb para 50MB, por exemplo, voce pode utilizar o comando:

    USE TEMPDB

    GO

    DBCC SHRINKFILE (tempdev, 50)

    Para diminuir o tamanho do arquivo de log do tempdb para 5MB, voce pode utilizar o comando:

    USE TEMPDB

    GO

    DBCC SHRINKFILE (templog, 5)

    O shrinkfile utiliza o nome logico do arquivo de dados do banco. Se voce nao criou nenhum novo arquivo de dados ou log para o tempdb depois que instalou o SQL, seu tempdb deve possuir somente estes dois arquivos, o tempdev (dados) e o templog (log). Para saber se seu tempdb possui mais arquivos de dados, ou para obter o nome logico dos arquivos de dados do tempdb voce pode utilizar o comando:

    SP_HELPDB TEMPDB

    As unicas situações em que voce pode executar o shrinkfile e o arquivo nao diminuir de tamanho são duas:

    1. Se o arquivo estiver com dados

    2. Se um aplicativo estiver executando comandos no banco que facam uso do tempdb

    Assim, se seus arquivos do tempdb estao vazios e se nenhum usuario ou processo esta utilizando o banco, voce deve conseguir diminuir o tamanho do tempdb com o shrinkfile.

    Espero que tenha conseguido esclarecer.

    Qualquer duvida, retorne.

    Abs,

    terça-feira, 14 de novembro de 2006 11:39
  • A todos!

    Obrigado pela ajuda, agora deu certo!

    Grato,

    Fernando Pasqua

     

    terça-feira, 14 de novembro de 2006 13:27