Esta é uma pergunta de acompanhamento para uma pergunta anterior sobre por que não pude reduzir o arquivo de log no banco de dados principal.
Para encurtar a história, configurei o espelhamento de banco de dados, mas esqueci de me certificar de que o trabalho que fazia o backup do log de transações estava sendo executado novamente e o log de transações cresceu para quase 60 GB.
Desde que o espelhamento foi configurado, esse aumento de tamanho foi duplicado no servidor espelhado e, eventualmente, ocupou todo o espaço em disco e tornou o banco de dados inutilizável.
Por esta pergunta sobre manutenção do log de transações em um banco de dados espelho, não é possível fazer backup do log no espelho, mas quando perguntado especificamente nos comentários sobre como reduzir um arquivo de log cheio em um banco de dados espelho, foi deixado um comentário que
Uma maneira de fazer isso seria fazer o failover no banco de dados espelhado e diminuir o conteúdo lá. Teste completamente isso em um ambiente de não produção para garantir que ele tenha o comportamento que você deseja / espera.
Isso parece sugerir que pode haver outras maneiras de reduzir o arquivo de log em um espelho, e esse método pode não ser necessariamente seguro em um servidor de produção.
Existe uma maneira de reduzir com segurança o arquivo de log de transações em um espelho de banco de dados?
fonte
Respostas:
O
DBCC SHRINKFILE
comando será espelhado do principal para o banco de dados espelhado. Aqui estão algumas provas.Crie um banco de dados de amostra no principal:
Crie o mesmo banco de dados a partir de um backup com
NORECOVERY
:Configure sua sessão de espelhamento da maneira que você escolher.
No banco de dados principal, observe os tamanhos dos arquivos de banco de dados:
Meu conjunto de resultados se parece com o seguinte:
No banco de dados espelho , crie uma captura instantânea e observe as mesmas informações:
Meu conjunto de resultados é semelhante ao seguinte:
Agora, aumente o arquivo de log de transações no banco de dados principal (eu o trouxe para 1 GB):
Observando o tamanho do log de transações do banco de dados principal , agora vemos o tamanho ajustado:
Meu conjunto de resultados é semelhante ao seguinte:
Crie outro instantâneo no banco de dados espelhado e observe o tamanho do arquivo do log de transações:
Meu conjunto de resultados é semelhante ao seguinte:
Agora faça
DBCC SHRINKFILE
o principal :Meu conjunto de resultados é o seguinte:
Crie um terceiro e último instantâneo no banco de dados espelhado e observe o tamanho:
E recebo o seguinte conjunto de resultados:
Portanto, como você pode ver aqui, o
DBCC SHRINKFILE
comando é de fato espelhado no banco de dados espelho.fonte
DBCC SHRINKFILE
-lo. Quanto a se você pode consertar sua sessão de espelhamento sem remover o espelhamento nesse banco de dados, há um pouco mais de investigação que teria que ocorrer lá. Parece que foi suspenso por causa do tamanho do arquivo. Você tentou retomar o parceiro?