Comentar utilização da PROCEDURE UP_REDUZ_LOG
2 participantes
Concessionárias Brasil | Fórum Oficial :: Informática - TI - CPD :: Microsoft SQL Server 2005 - 2016
Página 1 de 1
Comentar utilização da PROCEDURE UP_REDUZ_LOG
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*/(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
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*/(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- Moderador
- Mensagens : 2
Pontos : 304
Data de inscrição : 09/06/2016
Re: Comentar utilização da PROCEDURE UP_REDUZ_LOG
Desculpe colega,
Você deseja que comente as linhas do script ou que informe em que situação podemos utilizar o script acima?
Você deseja que comente as linhas do script ou que informe em que situação podemos utilizar o script acima?
fabio.cerqueira- Especialista
- Mensagens : 14
Pontos : 738
Data de inscrição : 09/06/2016
Idade : 36
Localização : Brasil
Re: Comentar utilização da PROCEDURE UP_REDUZ_LOG
Apenas a Situação Caríssimo de uso!!!!
Eder_Eloy- Moderador
- Mensagens : 2
Pontos : 304
Data de inscrição : 09/06/2016
Re: Comentar utilização da PROCEDURE UP_REDUZ_LOG
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]
[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- Especialista
- Mensagens : 14
Pontos : 738
Data de inscrição : 09/06/2016
Idade : 36
Localização : Brasil
Concessionárias Brasil | Fórum Oficial :: Informática - TI - CPD :: Microsoft SQL Server 2005 - 2016
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|