Eu tenho um aplicativo que está usando replicação transacional. Estamos usando instantâneos para inicializar as assinaturas. Todos os editores e assinantes estão usando o SQL Server 2008.
Devido à forma como nossa implantação funciona, acabo tendo que reinicializar os assinantes toda vez que fazemos uma compilação. Isso é demorado e incomoda os negócios, por isso tenho que garantir que nossos desenvolvedores estejam cientes do impacto que suas alterações terão no tamanho dos instantâneos e no tempo necessário para aplicá-los. Também quero medir o impacto das alterações de configurações que faço nas publicações e agentes (encadeamentos bcp, tamanho do lote etc.).
As métricas que quero capturar são:
- O tamanho do instantâneo gerado para cada publicação.
- O tempo que levou para gerar o instantâneo.
- O tempo que levou para aplicar o instantâneo no assinante.
É possível obter essas informações consultando a distribuição? Percebo que poderia obter o tamanho do instantâneo observando o sistema de arquivos depois que ele é gerado, mas prefiro evitar isso, se possível.
Você não pode obter essas métricas usando T-SQL. Você pode verificar o status da replicação usando o T-SQL.
Dependendo do tamanho do seu banco de dados de publicação (para bancos de dados pequenos na mesma rede, você nem deve olhar para o tempo/tamanho, pois será super rápido), você pode seguir as etapas abaixo para obter uma estimativa ROUGH ( número aproximado ) do tamanho e tempo do instantâneo a ser gerado e aplicado ao assinante:
Observação: enfatizei a estimativa aproximada, pois, dependendo do que você está replicando, por exemplo, procedimentos de armazenamento, índices, restrições etc., também haverá arquivos adicionais gerados.
Selecione os 10 artigos principais (depende de você - quantos você escolher) com contagens de linha mais altas do banco de dados de publicação e
BCP OUT
dos dados. Isso fornecerá uma melhor avaliação do requisito de espaço do agente instantâneo. Esta seria uma operação com uso intensivo de recursos e, portanto, deve ser agendada durante a atividade silenciosa do servidor.Nota: Acima, você terá uma estimativa de tempo gasto pelo BCP e o tamanho do arquivo BCP.
Portanto, o ponto acima responderá ao 1º e 2º pontos.
Agora, para obter o tempo necessário para aplicar o instantâneo ao assinante, você deve executar
bcp in
a partir do servidor publicador especificando o SUBSCRIBER_SERVER_NAMEDessa forma, você obtém uma estimativa de quanto tempo levará para aplicar o instantâneo ao assinante.