Estou configurando a replicação transacional em meu servidor 2008R2 para o servidor de distribuição 2012 para o servidor Assinante 2012. Todos os três servidores estão em modo de recuperação COMPLETO. O backup do log é feito a cada 15 minutos e o backup completo é feito diariamente, todos os dias, em todos os três bancos de dados do servidor usados na replicação. Queremos usar o assinante como servidor de relatórios. O Publisher é nosso principal banco de dados OLTP.
Como posso receber um alerta antes que o espaço t-log do meu editor esteja cheio devido a qualquer problema na replicação. Não quero que meu editor caia de forma alguma. Os t-logs são apoiados a cada 15 minutos no editor. Isso significaria que todos os VLFs que são lidos ativamente pelo leitor de log podem ser copiados quando o backup do log for feito? quais alertas devo usar para me informar que o espaço de log está ficando cheio no editor? Existe algum script que também possa interromper o agente de replicação/leitor de log quando o espaço de log estiver ficando perigosamente grande no editor?
Posso remover a replicação e restabelecer (com um novo instantâneo) quando a replicação estiver causando problemas e criando logs no meu editor. Mas não quero esperar que essa situação aconteça (o espaço de log está cheio no editor) e quero tomar medidas apenas antes - como remover a replicação antes apenas quando o espaço de log atingir uma determinada porcentagem. Como eu posso fazer isso?
Além disso, qual deveria ser minha estratégia para interromper e remover a replicação? Seguirei a documentação da Microsoft para remover a replicação, mas não estou claro se devo interromper o agente Log Reader e o agente de distribuição antes de remover a replicação.
Você pode usar o script abaixo para verificar se o arquivo de log está acima de determinado limite de tamanho, mais de 90% cheio e enviar notificação por e-mail.
Você pode agendar o script acima no SQL Agent para ser executado a cada, digamos, 15 minutos para verificar se o log está ficando cheio, notificá-lo por e-mail, para que você possa agir.
Consulte outra resposta - remova manualmente a replicação.
Como posso receber um alerta antes que o espaço t-log do meu editor esteja cheio devido a qualquer problema na replicação.
Depende de como o crescimento do arquivo de log de transações está configurado.
Se você aumentou previamente seus arquivos de log de transações e limitou o tamanho do arquivo, será necessário monitorar a porcentagem do arquivo de log usado e definir um alerta em um limite confortável. Você pode usar DBCC SQLPERF (Transact-SQL) para monitorar o uso do espaço de log para todos os bancos de dados. Outra solução é usar Get-DbaDbSpace de dbatools . Existem muitas outras soluções disponíveis para fazer o mesmo.
Se você permitir o crescimento do arquivo, deverá monitorar o espaço livre na unidade (onde reside o arquivo de log). Novamente, você pode usar o comando dbatools Get-DbaDiskSpace ou outras soluções para configurar um alerta.
Existe algum script que também possa interromper o agente de replicação/leitor de log quando o espaço de log estiver ficando perigosamente grande no editor?
Parar o leitor de log não irá ajudá-lo neste caso. Os logs de transações não serão truncados, a menos que o agente leitor de log processe esses registros (enviando-os para o banco de dados de distribuição). Você pode remover a replicação seguindo Remover manualmente a replicação no SQL Server .
Além disso, qual deveria ser minha estratégia para interromper e remover a replicação? Seguirei a documentação da Microsoft para remover a replicação, mas não estou claro se devo interromper o agente Log Reader e o agente de distribuição antes de remover a replicação.
Eu respondi na seção anterior. Como posso remover permanentemente a replicação por script se só tenho acesso ao assinante? tem algumas outras opções.
Por outro lado, dependendo do requisito de relatório, você considerou o envio de logs como uma solução?