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