• Imprimir

 

use <SEUBANCO>

DBCC CHECKDB;

Socorro os bancos tomaram tody e ficaram big.

Esta tendo problemas com os banquinhos.

 

Então venha para o lado bom da força este peque script quebra um bom galho, principalmente se mesclar ele com aquele script que gera script.

 

DBCC SHRINKFILE(<SEUBANCO>, 5);

DBCC SHRINKDATABASE (<SEUBANCO>, TRUNCATEONLY);

DBCC CHECKALLOC

DBCC DROPCLEANBUFFERS 

DBCC FREEPROCCACHE 

DBCC UPDATEUSAGE (0);

 

 

========== Nao resisti toma de bandeja ===================

 

use master

DECLARE @nome_banco varchar(50)

DECLARE @nome_banco_apoio varchar(50)

DECLARE @arquivo_shrinkfile varchar(50)

SET @nome_banco_apoio =' ' 

DECLARE lista CURSOR SCROLL FOR 

select db_name(database_id) as nome_banco,name as arquivo_shrinkfile from sys.master_files where  db_name(database_id) <> 'master' AND db_name(database_id) <> 'model' AND db_name(database_id) <> 'msdb' AND db_name(database_id) <> 'tempdb' order by nome_banco

OPEN lista

-- Primeiro registro

FETCH FIRST FROM lista INTO @nome_banco,@arquivo_shrinkfile

WHILE @@FETCH_STATUS = 0

BEGIN

IF @nome_banco <> @nome_banco_apoio

BEGIN

   PRINT 'use  '+ @nome_banco  

PRINT 'DBCC CHECKDB;'

-- JEITO PARA SHRINKFILE NO BANCO DE DADOS

PRINT 'DBCC SHRINKDATABASE ( '+ @nome_banco + ' , TRUNCATEONLY);'

PRINT 'DBCC CHECKALLOC'

PRINT 'DBCC DROPCLEANBUFFERS '

PRINT 'DBCC FREEPROCCACHE '

PRINT 'DBCC UPDATEUSAGE (0);'

-- JEITO PARA SHRINKFILE ARQUIVO DE DADOS 

PRINT 'DBCC SHRINKFILE('+ @arquivo_shrinkfile + ', 0, TRUNCATEONLY);'

SET @nome_banco_apoio=@nome_banco

    END

ELSE

-- JEITO PARA SHRINKFILE NO ARQUIVO DE LOG

BEGIN

PRINT 'DBCC SHRINKFILE('+ @arquivo_shrinkfile + ', 0, TRUNCATEONLY);'

END

-- Próximo registro

FETCH NEXT FROM lista INTO  @nome_banco,@arquivo_shrinkfile

END

CLOSE lista

DEALLOCATE lista