terça-feira, 3 de abril de 2012

Shrink MSSQL Server 2005 e 2008

Objetivo deste artigo tem com principio a orientação de como proceder redução de LOG e BD no MSSQL SERVER 2005 e 2008.

Lembro também que execução de SHRINK, impossibilita a recuperação do BD, caso ocorra alguma suspeita de corrupção do banco de dados (SUSPECT), todavia é recomendável configurar plano de manutenção, evitando assim muitas problemas.

Recomenda-se backup full antes de executar os scripts abaixo:

No MSSQL SERVER 2005 para MDF e LDF


--SHIRINK SQL SERVER 2005, formato 1, SHIRINK DE LDF e MDF 
--Alterar o [nome_banco] para seu banco de dados 
USE [nome_banco]; 
GO
BACKUP LOG [nome_banco] WITH TRUNCATE_ONLY;
GO
DBCC SHRINKDATABASE([nome_banco], 10, TRUNCATEONLY);


No MSSQL SERVER 2008 para MDF e LDF
--SHIRINK SQL SERVER 2008, formato 1, se tiver como recovery_mode full, SHIRINK DE LDF e MDF 
--Lista bancos com os modos de recuperação 
SELECT name, recovery_model, recovery_model_desc, state_desc, collation_name, user_access_desc, create_date 
FROM sys.databases;
GO

--Alterar o [nome_banco] para seu banco de dados 
USE [nome_banco]; 
GO

BACKUP LOG [nome_banco] TO DISK = 'NUL:';
GO

DBCC SHRINKDATABASE([nome_banco], 10, TRUNCATEONLY);
GO

Truncando apenas o LOG (LDF) MS SQL SERVER 2005

--SHIRINK SQL SERVER 2005, formato 2, SHIRINK DE LOG 
--Alterar o [nome_banco] para seu banco de dados 
USE [nome_banco];
GO

BACKUP LOG [nome_banco] WITH TRUNCATE_ONLY;
GO

DECLARE @log_file_logical_name sysname;
SELECT @log_file_logical_name=name FROM sys.database_files d WHERE type = 1;
PRINT @log_file_logical_name;

DBCC SHRINKFILE (@log_file_logical_name, 1);
GO



Truncando apenas o LOG (LDF) MS SQL SERVER 2008
--SHIRINK SQL SERVER 2008, formato 2, SHIRINK DE LOG 
--USANDO RECOVERY SIMPLE, isto é, desabilitando o LOG detalhado 
--Alterar o [nome_banco] para seu banco de dados 
SELECT name, recovery_model, recovery_model_desc, state_desc, collation_name, user_access_desc, create_date FROM sys.databases;
GO

USE [nome_banco];
GO
ALTER DATABASE [nome_banco] SET RECOVERY SIMPLE; 
GO

DECLARE @log_file_logical_name sysname;
SELECT @log_file_logical_name=name FROM sys.database_files d WHERE type = 1;
PRINT @log_file_logical_name;

DBCC SHRINKFILE (@log_file_logical_name, 1);
GO

-- Retornando para recovery_model para full 
ALTER DATABASE [nome_banco] SET RECOVERY FULL ; 


Espero ter ajudado!

Nenhum comentário:

Postar um comentário