Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure SQL Managed Instance
Este tópico descreve como medir a latência e validar ligações para replicação transacional no SQL Server utilizando o Replication Monitor, Transact-SQL ou Replication Management Objects (RMO). A replicação transacional fornece a funcionalidade do token traçador, que proporciona uma forma conveniente de medir a latência em topologias de replicação transacional e de validar as ligações entre o Publisher, o Distribuidor e os Assinantes. Um token (uma pequena quantidade de dados) é escrito no registo de transações da base de dados de publicação, marcado como se fosse uma transação replicada típica, e enviado através do sistema, permitindo um cálculo de:
Quanto tempo decorre entre uma transação ser comprometida no Publisher e o comando correspondente ser inserido na base de dados de distribuição do Distribuidor.
Quanto tempo decorre entre a inserção de um comando na base de dados de distribuição e a confirmação da transação correspondente num Subscritor.
A partir destes cálculos, pode responder a várias perguntas, incluindo:
Quais assinantes demoram mais a receber uma alteração do Publisher?
Dos subscritores dos quais se espera que recebam o token de rastreio, quais, se existirem, não o receberam?
Limitações e Restrições
Os tokens de rastreio também podem ser úteis ao colocar um sistema em quiescência, o que implica parar toda a atividade e verificar se todos os nós receberam todas as alterações pendentes. Para obter mais informações, consulte desativar uma topologia de replicação (replicação Transact-SQL programação).
Para utilizar tokens de rastreio, tem de utilizar determinadas versões do Microsoft SQL Server:
O Distribuidor deve ser Microsoft SQL Server 2005 (9.x) ou posterior.
O Publisher deve ser SQL Server 2005 (9.x) ou posterior, ou ser um Oracle Publisher.
Para subscrições push, as estatísticas dos tokens de rastreio são recolhidas do Publicador, do Distribuidor e dos Assinantes, se o Assinante for o Microsoft SQL Server 7.0 ou posterior.
Para subscrições pull, as estatísticas dos tokens de rastreio são recolhidas apenas dos subscritores, se o Subscritor for o SQL Server 2005 (9.x) ou posterior. Se o Assinante for SQL Server 7.0 ou Microsoft SQL Server 2000 (8.x), as estatísticas são recolhidas apenas do Publisher e do Distribuidor.
Existem também várias outras questões e restrições a ter em conta:
As subscrições devem estar ativas para receber um token rastreador. Uma subscrição está ativa se tiver sido inicializada.
A reinicialização remove todos os tokens de rastreio pendentes das subscrições relevantes.
Os assinantes só recebem tokens rastreadores que foram criados após a sua sincronização inicial.
Os tokens Tracer não são encaminhados por Subscritores de republicação.
Após o failover para uma instância secundária, o Replication Monitor não consegue atualizar o nome da instância publicadora do SQL Server e continuará a apresentar as informações de replicação com o nome da instância primária original do SQL Server. Após o failover, não é possível introduzir um token de rastreio através do Monitor de Replicação; no entanto, um token de rastreio introduzido no novo publicador através de Transact-SQL é visível no Monitor de Replicação.
Utilização do SQL Server Replication Monitor
Para obter informações sobre como iniciar o Replication Monitor, consulte Iniciar o Replication Monitor.
Para inserir um token rastreador e visualizar informações sobre o token
Expanda um grupo Publisher no painel esquerdo, expanda um Publisher e depois clique numa publicação.
Clique no separador Fichas de rastreio.
Clique em Inserir rastreador.
Veja o tempo decorrido para o token rastreador nas colunas seguintes: Editor para Distribuidor, Distribuidor para Assinante, Latência Total. Um valor de Pendente indica que o token não atingiu um determinado ponto.
Para visualizar informações sobre um token rastreador inserido anteriormente
Expanda um grupo Publisher no painel esquerdo, expanda um Publisher e depois clique numa publicação.
Clique no separador Fichas de rastreio.
Selecione uma hora na lista suspensa Hora inserida.
Veja o tempo decorrido para o token rastreador nas colunas seguintes: Editor para Distribuidor, Distribuidor para Assinante, Latência Total. Um valor de Pendente indica que o token não atingiu um determinado ponto.
Note
A informação dos tokens de rastreio é mantida durante o mesmo período que os outros dados históricos, o qual é regido pelo período de retenção do histórico da base de dados de distribuição. Para informações sobre a alteração das propriedades da base de dados de distribuição, consulte Visualizar e Modificar Propriedades de Distribuidores e Publisher.
Usando Transact-SQL
Para publicar um token rastreador numa publicação transacional
(Opcional) No Publicador, na base de dados de publicação, execute sp_helppublication (Transact-SQL). Verifique se a publicação existe e que o estado está ativo.
(Opcional) No Publicador, na base de dados de publicação, execute sp_helpsubscription (Transact-SQL). Verifique se a subscrição existe e se o estado está ativo.
No Publicador, na base de dados de publicação, execute sp_posttracertoken (Transact-SQL), especificando @publication. Note 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
Coloque um token rastreador na publicação usando o procedimento anterior.
No Publicador, na base de dados de publicação, execute sp_helptracertokens (Transact-SQL), especificando @publication. Isto devolve uma lista de todos os tokens de rastreio enviados para a publicação. Note a tracer_id desejada no conjunto de resultados.
No Publicador da base de dados de publicações, execute sp_helptracertokenhistory (Transact-SQL), especificando @publication e o ID do token de rastreio do passo 2 para @tracer_id. Isto devolve informação de latência para o token traçador selecionado.
Para remover tokens de rastreio
No Publicador, na base de dados de publicação, execute sp_helptracertokens (Transact-SQL), especificando @publication. Isto devolve uma lista de todos os tokens de rastreio enviados para a publicação. Note a tracer_id para o token traçador ser eliminado do conjunto de resultados.
No Publisher da base de dados de publicação, execute sp_deletetracertokenhistory (Transact-SQL), especificando @publication e o ID do traçador a eliminar do passo 2 para
@tracer_id.
Exemplo (Transact-SQL)
Este exemplo publica um registo de token rastreador e utiliza o ID devolvido do token rastreador publicado para visualizar a informação de latência.
DECLARE @publication AS sysname;
DECLARE @tokenID AS int;
SET @publication = N'AdvWorksProductTran';
USE [AdventureWorks2022]
-- 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
Utilização de Objetos de Gestão de Replicação (RMO)
Para publicar um token rastreador numa publicação transacional
Crie uma conexão com o Publisher usando a classe ServerConnection.
Crie uma instância da TransPublication classe.
Defina as Name propriedades e DatabaseName para a publicação, e defina a ConnectionContext propriedade para a ligação criada no passo 1.
Chame o método LoadProperties para obter as propriedades do objeto. Se este método devolver falso, ou as propriedades de publicação no passo 3 foram definidas incorretamente ou a publicação não existe.
Chame o método PostTracerToken. Este método insere um token rastreador no registo de transações da publicação.
Para determinar a latência e validar conexões para uma publicação transacional
Crie uma conexão com o Distribuidor usando a classe ServerConnection.
Crie uma instância da PublicationMonitor classe.
Defina as propriedades Name, DistributionDBName, PublisherName e PublicationDBName, e defina a propriedade ConnectionContext para a ligação criada no passo 1.
Chame o método LoadProperties para obter as propriedades do objeto. Se este método devolver falso, ou as propriedades do monitor de publicação no passo 3 foram definidas incorretamente ou a publicação não existe.
Chame o método EnumTracerTokens. Converta o objeto ArrayList devolvido num array de objetos TracerToken.
Chame o método EnumTracerTokenHistory. Introduza um valor de TracerTokenId para um token de rastreio obtido no passo 5. Isto devolve informação de latência para o token traçador selecionado como objeto DataSet . Se forem devolvidas todas as informações do token de rastreio, isso significa que a ligação entre o Publisher e o Distributor e a ligação entre o Distributor e o Subscriber ambas existem e que a topologia de replicação está a funcionar.
Para remover tokens de rastreio
Crie uma conexão com o Distribuidor usando a classe ServerConnection.
Crie uma instância da PublicationMonitor classe.
Defina as propriedades Name, DistributionDBName, PublisherName e PublicationDBName, e defina a propriedade ConnectionContext para a ligação criada no passo 1.
Chame o método LoadProperties para obter as propriedades do objeto. Se este método devolver falso, ou as propriedades do monitor de publicação no passo 3 foram definidas incorretamente ou a publicação não existe.
Chame o método EnumTracerTokens. Converta o objeto ArrayList devolvido num array de objetos TracerToken.
Chame o método CleanUpTracerTokenHistory. Passe um dos seguintes valores:
O TracerTokenId para um token de rastreio do passo 5. Isto apaga a informação de um token selecionado.
Um objeto DateTime. Isto elimina a informação de todos os tokens mais antigos do que a data e hora especificadas.