SQL Server – Shrink de Todos os Devices

Antes de executar esse script, faça testes e mais testes!

Este script permite diminuir o tamanho de todos os devices existentes no SQL Server.  =)
Lembrando que são todos os devices, MENOS os devices de sistema!

SET NOCOUNT ON

DECLARE
	  @DBName		varchar(36)
	, @Cmd			varchar(255)
	, @Cmd2			varchar(255)
	, @Cmd3			varchar(255)
	, @I			int
	, @J			int
	, @Y 			int
	, @X			int
	, @GP			int

-- Cria tabela temporária para armazenar os bancos de dados
CREATE TABLE #TEMP(
	  Id		int	identity
	, DBName	sysname
)

INSERT INTO #TEMP
	SELECT	 DB.Name
	FROM	 Master.dbo.SysDataBases DB
	WHERE	 DB.Name Not In('TEMPDB' ,'MASTER','MODEL','MSDB')
	ORDER BY DB.Name

Select @I = 1
Select @J = Max(ID) FROM #TEMP

While @I < @J
Begin
	SELECT @DBName 	= DBName FROM #TEMP WHERE @I = Id
	Select @Cmd 	= Null

	-- Tabela temporária para armazenar os DataFiles
	CREATE TABLE #TEMP2(
		  Id		int identity
		, Cmd		varchar(100)
		, GroupId	int
	)

	Select @Cmd = 'USE ' + @DBName + ' INSERT INTO #TEMP2 SELECT ''DBCC SHRINKFILE(''+RTrim(Name)+'',1)'',GroupId FROM SysFiles ORDER BY 1'
	EXEC (@Cmd)

	Select @Y = 1
	Select @X = Max(Id) FROM #TEMP2

	While @Y <= @X
  	Begin
   		SELECT @Cmd2 = Cmd, @GP = GroupId FROM #TEMP2 WHERE @Y = ID
   		Select @Cmd3 = NULL

		If @GP=0
   		Begin
    			SELECT @Cmd3='USE ' + @DBName + ' BACKUP LOG ' + @DBName + ' WITH TRUNCATE_ONLY'
    			PRINT (@Cmd3)
    			EXEC  (@Cmd3)
   		End  

 		PRINT('USE '+ @DBName + ' ' + @Cmd2)
   		EXEC('USE ' + @DBName + ' ' + @Cmd2)
   		SELECT @Y=@Y+1
  	End   

	DROP TABLE #TEMP2 

	Select @I = @I +1
End

DROP TABLE #TEMP

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s