Compartilhar via


Medir latência e validar conexões para replicação transacional

Este tópico descreve como medir a latência e validar conexões para replicação transacional no SQL Server 2014 usando o Replication Monitor, o Transact-SQL ou o RMO (Replication Management Objects). A replicação transacional fornece o recurso de token de rastreamento, que fornece uma maneira conveniente de medir a latência em topologias de replicação transacional e validar as conexões entre o Publicador, o Distribuidor e os Assinantes. Um token (uma pequena quantidade de dados) é gravado no log de transações do banco de dados de publicação, marcado como se fosse uma transação replicada típica e enviado pelo sistema, permitindo um cálculo de:

  • Quanto tempo decorrido entre uma transação que está sendo confirmada no Publicador e o comando correspondente que está sendo inserido no banco de dados de distribuição no Distribuidor.

  • Quanto tempo leva entre a inserção de um comando no banco de dados de distribuição e a confirmação da transação correspondente em um Subscriber?

A partir desses cálculos, você pode responder a várias perguntas, incluindo:

  • Quais Assinantes demoram mais para receber uma alteração do Publicador?

  • Dos Assinantes esperados para receber o token de rastreamento, que, se houver, não o receberam?

Nesse Tópico

Antes de começar

Limitações e restrições

Os tokens de rastreamento também podem ser úteis ao consultar um sistema, que envolve interromper todas as atividades e verificar se todos os nós receberam todas as alterações pendentes. Para obter mais informações, confira Como confirmar uma topologia de replicação (Programação Transact-SQL de replicação).

Para usar tokens de rastreamento, você deve usar determinadas versões do Microsoft SQL Server:

  • O Distribuidor deve ser o Microsoft SQL Server 2005 ou posterior.

  • O Publicador deve ser o SQL Server 2005 ou posterior ou ser um Publicador Oracle.

  • Para assinaturas push, as estatísticas de token de rastreamento serão coletadas do Publicador, Distribuidor e Assinantes se o Assinante for o Microsoft SQL Server 7.0 ou posterior.

  • Para assinaturas pull, as estatísticas de token de rastreamento são coletadas dos Assinantes somente se o Assinante for SQL Server 2005 ou posterior. Se o Assinante for SQL Server 7.0 ou Microsoft SQL Server 2000, as estatísticas serão coletadas somente do Publicador e Distribuidor.

Há também várias outras questões e restrições a serem observadas:

  • As assinaturas devem estar ativas para receber um token de rastreamento. Uma assinatura estará ativa se tiver sido inicializada.

  • A reinicialização remove todos os tokens de rastreamento pendentes para as assinaturas relevantes.

  • Os assinantes recebem apenas tokens de rastreamento que foram criados após a sincronização inicial.

  • Os tokens de rastreamento não são encaminhados pela republicação de Assinantes.

  • Após o failover para um secundário, o Replication Monitor não consegue ajustar o nome da instância de publicação do SQL Server e continuará a exibir informações de replicação sob o nome da instância primária original do SQL Server. Depois do failover, um token de rastreamento não pode ser inserido usando o Replication Monitor; no entanto, um token de rastreamento inserido no novo publicador usando Transact-SQL fica visível no Replication Monitor.

Usando o SQL Server Replication Monitor

Para obter informações sobre como iniciar o Replication Monitor, consulte Iniciar o Replication Monitor.

Para inserir um token de rastreamento e exibir informações no token

  1. Expanda um grupo publicador no painel esquerdo, expanda um Publicador e clique em uma publicação.

  2. Clique na guia Tokens de Rastreamento .

  3. Clique em Inserir Rastreamento.

  4. Exibir o tempo decorrido para o token de rastreamento nas seguintes colunas: Publicador para Distribuidor, Distribuidor para Assinante, Latência Total. Um valor pendente indica que o token não atingiu um determinado ponto.

Para exibir informações sobre um token de rastreamento inserido anteriormente

  1. Expanda um grupo publicador no painel esquerdo, expanda um Publicador e clique em uma publicação.

  2. Clique na guia Tokens de Rastreamento .

  3. Selecione uma hora na lista suspensa Tempo inserido.

  4. Exibir o tempo decorrido para o token de rastreamento nas seguintes colunas: Publicador para Distribuidor, Distribuidor para Assinante, Latência Total. Um valor pendente indica que o token não atingiu um determinado ponto.

    Observação

    As informações do token de rastreamento são retidas pelo mesmo período de tempo que outros dados históricos, que são regidos pelo período de retenção de histórico do banco de dados de distribuição. Para obter informações sobre como alterar as propriedades do banco de dados de distribuição, consulte Exibir e modificar propriedades do Distribuidor e do Publicador.

Usando Transact-SQL

Para postar um token de rastreamento em uma publicação transacional

  1. (Opcional) No Publicador, no banco de dados de publicação, execute sp_helppublication (Transact-SQL). Verifique se a publicação existe e se o status está ativo.

  2. (Opcional) No Publicador no banco de dados de publicação, execute o comando sp_helpsubscription (Transact-SQL). Verifique se a assinatura existe e se o status está ativo.

  3. No Publicador do banco de dados de publicação, execute sp_posttracertoken (Transact-SQL), especificando @publication. Observe o valor do parâmetro de saída @tracer_token_id .

Para determinar a latência e validar conexões para uma publicação transacional

  1. Poste um token de rastreamento na publicação usando o procedimento anterior.

  2. No banco de dados de publicação do publicador, execute sp_helptracertokens (Transact-SQL), especificando @publication. Isso retorna uma lista de todos os tokens de rastreamento postados na publicação. Observe o tracer_id desejado no conjunto de resultados.

  3. No Publicador do banco de dados de publicação, execute sp_helptracertokenhistory (Transact-SQL), especificando @publication e a ID do token de rastreamento da etapa 2 para @tracer_id. Isso retorna informações de latência para o token de rastreamento selecionado.

Para remover tokens de rastreamento

  1. No Editor do banco de dados de publicações, execute sp_helptracertokens (Transact-SQL), especificando @publication. Isso retorna uma lista de todos os tokens de rastreamento postados na publicação. Anote o tracer_id do token de rastreamento a ser excluído no conjunto de resultados.

  2. No Publicador do banco de dados de publicação, execute sp_deletetracertokenhistory (Transact-SQL), especificando @publication e o ID do rastreador que precisa ser excluído na etapa 2 para @tracer_id.

Exemplo (Transact-SQL)

Este exemplo posta um registro de token de rastreamento e usa a ID retornada do token de rastreamento postado para exibir informações de latência.

DECLARE @publication AS sysname;
DECLARE @tokenID AS int;
SET @publication = N'AdvWorksProductTran'; 

USE [AdventureWorks2012]

-- Insert a new tracer token in the publication database.
EXEC sys.sp_posttracertoken 
  @publication = @publication,
  @tracer_token_id = @tokenID OUTPUT;
SELECT 'The ID of the new tracer token is ''' + 
    CONVERT(varchar,@tokenID) + '''.'
GO

-- Wait 10 seconds for the token to make it to the Subscriber.
WAITFOR DELAY '00:00:10';
GO

-- Get latency information for the last inserted token.
DECLARE @publication AS sysname;
DECLARE @tokenID AS int;
SET @publication = N'AdvWorksProductTran'; 

CREATE TABLE #tokens (tracer_id int, publisher_commit datetime)

-- Return tracer token information to a temp table.
INSERT #tokens (tracer_id, publisher_commit)
EXEC sys.sp_helptracertokens @publication = @publication;
SET @tokenID = (SELECT TOP 1 tracer_id FROM #tokens
ORDER BY publisher_commit DESC)
DROP TABLE #tokens

-- Get history for the tracer token.
EXEC sys.sp_helptracertokenhistory 
  @publication = @publication, 
  @tracer_id = @tokenID;
GO

Usando Objetos de Gerenciamento de Replicação (RMO)

Para postar um token de rastreamento em uma publicação transacional

  1. Crie uma conexão com o Publicador usando a classe ServerConnection .

  2. Criar uma instância da classe TransPublication.

  3. Defina as Name propriedades e DatabaseName as propriedades da publicação e defina a ConnectionContext propriedade como a conexão criada na etapa 1.

  4. Chame o método LoadProperties para obter as propriedades do objeto. Se esse método retornar false, as propriedades da publicação na etapa 3 foram definidas incorretamente ou a publicação não existe.

  5. Chame o método PostTracerToken . Esse método insere um token de rastreamento no log de transações da publicação.

Para determinar a latência e validar conexões para uma publicação transacional

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection .

  2. Criar uma instância da classe PublicationMonitor.

  3. Defina as propriedades Name, DistributionDBName, PublisherName e PublicationDBName, e ajuste a propriedade ConnectionContext para a conexão criada na etapa 1.

  4. Chame o método LoadProperties para obter as propriedades do objeto. Se esse método retornar false, as propriedades do monitor de publicação na etapa 3 foram definidas incorretamente ou a publicação não existe.

  5. Chame o método EnumTracerTokens . Converta o objeto retornado ArrayList em uma matriz de TracerToken objetos.

  6. Chame o método EnumTracerTokenHistory . Passe um valor de TracerTokenId para um token de rastreamento da etapa 5. Isso retorna informações de latência para o token de rastreamento selecionado como um DataSet objeto. Se todas as informações do token de rastreamento forem retornadas, a conexão entre o Publicador e o Distribuidor e a conexão entre o Distribuidor e o Assinante existirá e a topologia de replicação estará funcionando.

Para remover marcadores de rastreamento

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection .

  2. Criar uma instância da classe PublicationMonitor.

  3. Defina as propriedades Name, DistributionDBName, PublisherName e PublicationDBName, e defina a propriedade ConnectionContext como a conexão criada na etapa 1.

  4. Chame o método LoadProperties para obter as propriedades do objeto. Se esse método retornar false, as propriedades do monitor de publicação na etapa 3 foram definidas incorretamente ou a publicação não existe.

  5. Chame o método EnumTracerTokens . Converta o objeto retornado ArrayList em uma matriz de TracerToken objetos.

  6. Chame o método CleanUpTracerTokenHistory . Passe um dos seguintes valores:

    • O TracerTokenId para um token de rastreamento da etapa 5. Isso exclui informações de um token selecionado.

    • Um DateTime objeto. Isso exclui informações para todos os tokens mais antigos que a data e a hora especificadas.