Concessionárias Brasil | Fórum Oficial
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Comentar utilização da PROCEDURE UP_REDUZ_LOG

2 participantes

Ir para baixo

Comentar utilização da PROCEDURE UP_REDUZ_LOG Empty Comentar utilização da PROCEDURE UP_REDUZ_LOG

Mensagem por Eder_Eloy Qui Jun 09, 2016 2:50 pm

Fábio poderia comentar esse Script Abaixo:

IF EXISTS (SELECT 1 FROM dbo.sysobjects where id = object_id(N'[dbo].[UP_REDUZ_LOG]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE UP_REDUZ_LOG
GO
CREATE PROCEDURE UP_REDUZ_LOG AS

DECLARE @bd_nome char(50)
DECLARE @bd_log char(50)
DECLARE @bd char(50)
DECLARE @CMD1 NVARCHAR(4000)
DECLARE @CMD2 NVARCHAR(4000)
DECLARE @tamanho int


SET NOCOUNT ON

if object_id('tempdb..#bd') is not null
Drop table #bd
create table #bd
(bd_nome varchar(255) null, bd_log varchar(255) null, tamanho int null)

DECLARE BDCURSOR CURSOR FOR
select  bd.name
from master.dbo.sysdatabases bd
inner join master.sys.databases bd2 on bd.name=bd2.name and bd2.state_desc='ONLINE'
where bd.dbid > 4
group by bd.name

OPEN BDCURSOR
FETCH BDCURSOR into @bd
WHILE @@FETCH_STATUS <> -1
BEGIN
select  @CMD1='Insert #bd (bd_nome,bd_log)'+char(10)
+char(10)+'select '''+rtrim(@bd)+''', a.name from '+rtrim(@bd)+'.sys.database_files a where type=1'+char(10)
+char(10)+'declare @size int'+char(10)
+char(10)+'select @size=a.size from '+rtrim(@bd)+'.sys.database_files a where type=0'+char(10)
+char(10)+'update b set b.tamanho= ((@size*Cool/(1024)) from #bd b where b.bd_nome ='''+rtrim(@bd)+''''+char(10)
+char(10)+'set @size=0'+char(10)
EXECUTE SP_EXECUTESQL @CMD1

FETCH BDCURSOR into @bd
END
CLOSE BDCURSOR
DEALLOCATE BDCURSOR

DECLARE LOGCURSOR CURSOR FOR
select bd_nome, bd_log, tamanho
from #bd
order by bd_nome , bd_log, tamanho

OPEN LOGCURSOR
FETCH LOGCURSOR into @bd_nome, @bd_log, @tamanho
WHILE @@FETCH_STATUS <> -1
BEGIN

IF EXISTS(SELECT 1 FROM MASTER.SYS.DATABASES WHERE NAME=RTRIM(@bd_nome) AND RECOVERY_MODEL_DESC='SIMPLE')
BEGIN
select @CMD2='USE '+RTRIM(@bd_nome)
+char(10)+'CHECKPOINT'
+char(10)+'DBCC SHRINKFILE (N'''+RTRIM(@bd_log)+''','+rtrim(CONVERT(INT,(@tamanho*0.2)))+')'+char(10)
END
ELSE
IF EXISTS(SELECT 1 FROM MASTER.SYS.DATABASES WHERE NAME=RTRIM(@bd_nome) AND RECOVERY_MODEL_DESC='BULK_LOGGED')
BEGIN
select @CMD2='USE '+RTRIM(@bd_nome)
+char(10)+'CHECKPOINT'
+char(10)+'ALTER DATABASE '+RTRIM(@bd_nome)+' SET RECOVERY SIMPLE'+char(10)
+char(10)+'DBCC SHRINKFILE (N'''+RTRIM(@bd_log)+''','+rtrim(CONVERT(INT,(@tamanho*0.2)))+')'+char(10)
+char(10)+'ALTER DATABASE '+RTRIM(@bd_nome)+' SET RECOVERY BULK_LOGGED'+char(10)
END
ELSE
IF EXISTS(SELECT 1 FROM MASTER.SYS.DATABASES WHERE NAME=RTRIM(@bd_nome) AND RECOVERY_MODEL_DESC='FULL')
BEGIN
select @CMD2='USE '+RTRIM(@bd_nome)
+char(10)+'CHECKPOINT'
+char(10)+'ALTER DATABASE '+RTRIM(@bd_nome)+' SET RECOVERY SIMPLE'+char(10)
+char(10)+'DBCC SHRINKFILE (N'''+RTRIM(@bd_log)+''','+rtrim(CONVERT(INT,(@tamanho*0.2)))+')'+char(10)
+char(10)+'ALTER DATABASE '+RTRIM(@bd_nome)+' SET RECOVERY FULL'+char(10)
END

EXECUTE SP_EXECUTESQL @CMD2
PRINT @CMD2
FETCH LOGCURSOR into @bd_nome, @bd_log, @tamanho
END
CLOSE LOGCURSOR
DEALLOCATE LOGCURSOR
Eder_Eloy
Eder_Eloy
Moderador
Moderador

Mensagens : 2
Pontos : 304
Data de inscrição : 09/06/2016

Ir para o topo Ir para baixo

Comentar utilização da PROCEDURE UP_REDUZ_LOG Empty Re: Comentar utilização da PROCEDURE UP_REDUZ_LOG

Mensagem por fabio.cerqueira Qui Jun 09, 2016 3:05 pm

Desculpe colega,

Você deseja que comente as linhas do script ou que informe em que situação podemos utilizar o script acima?
fabio.cerqueira
fabio.cerqueira
Especialista
Especialista

Mensagens : 14
Pontos : 738
Data de inscrição : 09/06/2016
Idade : 36
Localização : Brasil

Ir para o topo Ir para baixo

Comentar utilização da PROCEDURE UP_REDUZ_LOG Empty Re: Comentar utilização da PROCEDURE UP_REDUZ_LOG

Mensagem por Eder_Eloy Qui Jun 09, 2016 3:31 pm

Apenas a Situação Caríssimo de uso!!!!
Eder_Eloy
Eder_Eloy
Moderador
Moderador

Mensagens : 2
Pontos : 304
Data de inscrição : 09/06/2016

Ir para o topo Ir para baixo

Comentar utilização da PROCEDURE UP_REDUZ_LOG Empty Re: Comentar utilização da PROCEDURE UP_REDUZ_LOG

Mensagem por fabio.cerqueira Qui Jun 09, 2016 6:11 pm

Geralmente um servidor simples SQL Server configurado dentro dos padrões Microsoft possui o seguinte gerenciamento de discos:

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

Quando o disco LDF passa a utilizar mais de 50% da sua capacidade problema de performance começam a aparecer.

A execução do script acima garante a redução do tamanho destes arquivos LDF de forma segura garantindo a integridade dos dados.

Veja como uma partição LDF deve ficar em um ambiente saudável na imagem abaixo:

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
fabio.cerqueira
fabio.cerqueira
Especialista
Especialista

Mensagens : 14
Pontos : 738
Data de inscrição : 09/06/2016
Idade : 36
Localização : Brasil

Ir para o topo Ir para baixo

Comentar utilização da PROCEDURE UP_REDUZ_LOG Empty Re: Comentar utilização da PROCEDURE UP_REDUZ_LOG

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos