Bom dia Pessoal.
Estou com uma dúvida, verifiquei que o arquivo de log(transaction log) esta crescendo bastante, verifiquei também que ele está configurado para modo Recovery Simple, tentei realizar o comando dbcc shrinkfile (nome do Log, 1), mas sem sucesso ele continuava
com o mesmo tamanho, sendo assim iniciei pesquisa e descobri que existem transações ativas e ele esta configurado para replicação em algum objeto do banco, fiz isso através dos comandos: dbcc opentran(bancoDados) e o select log_reuse_wait_desc, name from sys.databases.
Feito isso removi a replicação com: sp_removedbreplication 'BancoDados', então apliquei o ShirinFile, e dessa vez funcionou perfeitamente reduzindo o tamanho do log(no servidor de testes).
Bom toda essa descrição para perguntar qual a melhor estrategia para fazer isso em Produção, pois tenho receio de perder dados, então não sei se faço isso direto no arquivo de log, se faço antes um Chekpoint para o trabalho do dia ficar realmente gravado
no arquivo de dados e depois fazer um ShirinkFile.
Minha estrategia será deixar o pessoal trabalhar até o fim do espediente, parar o sistema, fazer um backup do Banco(por segurança), realizar os comandos de parar transações e replicação, realizar um chekpoint para o trabalho do dia ficar gravado no banco
de dados fisicamente e proceder com o ShirinkFile para reduzir o log.
Será que estou certo ou teria problemas com essa logica?
Segue meu script:
-- Verificar se existem transaes abertas no Banco
dbcc opentran(Banco)
-- Verificar se existe objetos conf. para replicao no Banco
select log_reuse_wait_desc,name
from
sys.databases
-- Remove os objetos de replicao de um banco de dados, sem alterar os dados no banco de dados de distribuio (distributor)
sp_removedbreplication 'Banco'
use
Patrimonio2004
Go
CHECKPOINT
GO
-- Reduzir tamanho do log do banco
DBCC SHRINKFILE (Banco_Log, 1)
GO
-
-- em memria para o arquivo de dados.--
O comando checkpoint faz um commit das transaes que estao