Monitorar editores de replicação SQL do assinante

1

Eu tenho replicação transacional com muitos editores (50+) e um assinante central (coleta de dados). Existe alguma maneira (recurso do SQL Server, ferramenta de terceiros) como monitorar todas as publicações de um ponto idealmente do assinante central? (Algo como servidor de monitoramento com várias publicações com monitor de replicação)

Thx

    
por Cicik 20.05.2011 / 14:12

1 resposta

1

Sim, existe. A maneira como faço isso é que tenho um token de rastreamento de trabalho do SQL Agent em um intervalo regular para os editores e, em seguida, monito seu progresso do distribuidor (onde seu histórico é armazenado). Eu criei uma visão no banco de dados de distribuição que ajuda com isso.

USE [distribution]
GO

IF  EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[tokens]'))
    DROP VIEW [dbo].[tokens]
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

create view [dbo].[tokens] as
select
    ps.name as [publisher],
    p.publisher_db,
    p.publication, 
    ss.name as [subscriber],
    da.subscriber_db,
    t.publisher_commit,
    t.distributor_commit,
    h.subscriber_commit,
    datediff(second, t.publisher_commit, t.distributor_commit) as [pub to dist (s)],
    datediff(second, t.distributor_commit ,h.subscriber_commit) as [dist to sub (s)],
    datediff(second, t.publisher_commit, h.subscriber_commit) as [total latency (s)]
from mstracer_tokens t
inner join MStracer_history h
    on t.tracer_id = h.parent_tracer_id
inner join mspublications p
    on p.publication_id = t.publication_id
inner join sys.servers ps
    on p.publisher_id = ps.server_id
inner join msdistribution_agents da
    on h.agent_id = da.id
inner join sys.servers ss
    on da.subscriber_id = ss.server_id

Deixo como um exercício para o leitor transformar isso em monitoramento. Eu daria o que eu tenho, mas recentemente percebi que ele tem um bug nele. Mas é preciso ter em mente:

  • Um determinado editor pode não ter nenhum símbolo postado no período de tempo que você está procurando. Isso deve ser sinalizado
  • Como medida de latência, você deseja que o tempo publisher_commit do token mais recente seja confirmado para o assinante

Boa sorte!

    
por 20.05.2011 / 14:23