--创建token
DECLARE @tokenID AS INT;
EXEC sys.sp_posttracertoken 
@publication = @publication,
@tracer_token_id = @tokenID OUTPUT;

--查看token

EXEC sys.sp_helptracertokens @publication = @publication;

EXEC sys.sp_helptracertokenhistory  @publication , @tokenID

或者在分发库中查询

select * from MStracer_tokens where tracer_id=@tokenID

select * from MStracer_history where parent_tracer_id=@tokenID

可以使用下面的存储过程来定期插入token来检查复制延迟

并将延迟结果存放在master.dbo.PublicationTokenResult 中

USE [master]
GO
/****** Object: StoredProcedure [dbo].[usp_ReplicationTokenCheck] Script Date: 11/07/2013 13:33:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO CREATE PROCEDURE [dbo].[usp_ReplicationTokenCheck]
AS
BEGIN
SET NOCOUNT ON;
--=======================================================================
--检查记录表是否存在,不存在则创建
IF(NOT EXISTS(
SELECT 1 FROM master.sys.tables
WHERE name='PublicationTokenResult'
AND type='U'))
BEGIN
CREATE TABLE master.dbo.PublicationTokenResult
(
ID INT IDENTITY(1,1) PRIMARY KEY,
Publication NVARCHAR(200),
Subscriber NVARCHAR(200),
SubscriberDB NVARCHAR(200),
DistributorLatency INT,
SubscriberLatency INT,
OverallLatency INT,
CreatedTime DATETIME
)
END
--=======================================================================
--获取发布列表
CREATE TABLE #Rep
(
DBName NVARCHAR(200),
RepName NVARCHAR(200)
)
INSERT INTO #Rep(DBName,RepName)
EXEC sp_MSforeachdb '
IF(OBJECT_ID(''[?].[dbo].[syspublications]'') IS NOT NULL)
BEGIN
SELECT ''?'' AS DBName,name as RepName FROM [?].[dbo].[syspublications]
END
'
SELECT * FROM #Rep
DECLARE @publication AS NVARCHAR(200);
DECLARE @DBName AS NVARCHAR(200); DECLARE curRep CURSOR
FOR SELECT DBName,RepName FROM #Rep;
OPEN curRep;
FETCH NEXT FROM curRep INTO @DBName,@publication;
WHILE(@@FETCH_STATUS=0)
BEGIN
DECLARE @sql NVARCHAR(MAX)
SET @sql='
USE ['+@DBName+']
DECLARE @publication AS NVARCHAR(200);
DECLARE @delaySeconds INT;
DECLARE @tokenKeepDays INT;
DECLARE @recordKeepDays INT;
SET @tokenKeepDays=3;
SET @recordKeepDays=180;
SET @publication='''+@publication+'''
SET @delaySeconds=30;
--=======================================================================
--创建token
DECLARE @tokenID AS INT;
EXEC sys.sp_posttracertoken
@publication = @publication,
@tracer_token_id = @tokenID OUTPUT;
--=======================================================================
--等待指定秒数
DECLARE @SQL NVARCHAR(200);
SET @SQL=''WAITFOR DELAY ''''''+CONVERT(NVARCHAR(20),DATEADD(SECOND,@delaySeconds,''2001-1-1''),108)+''''''''
EXEC(@SQL)
--=======================================================================
--为每个已插入发布以确定滞后时间的跟踪标记分别返回一行
CREATE TABLE #tokens (tracer_id int, publisher_commit datetime);
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.
CREATE TABLE #result(
DistributorLatency int,
Subscriber nvarchar(200),
SubscriberDB nvarchar(200),
SubscriberLatency int,
OverallLatency int
);
INSERT #result(DistributorLatency,Subscriber,SubscriberDB,SubscriberLatency,OverallLatency)
EXEC sys.sp_helptracertokenhistory
@publication = @publication,
@tracer_id = @tokenID; --=======================================================================
--保存处理执行结果
INSERT INTO master.dbo.PublicationTokenResult
(
Publication,
Subscriber,
SubscriberDB,
DistributorLatency,
SubscriberLatency,
OverallLatency,
CreatedTime
)
SELECT @publication,
Subscriber,
SubscriberDB,
DistributorLatency,
SubscriberLatency,
OverallLatency,
GETDATE()
FROM #result;
--=======================================================================
--清理执行结果和删除过期记录
DROP TABLE #result
DECLARE @date DATETIME;
SET @date=DATEADD(DAY,0-@tokenKeepDays,GETDATE())
EXEC sp_deletetracertokenhistory
@publication = @publication,
@cutoff_date = @date
DELETE FROM master.dbo.PublicationTokenResult
WHERE CreatedTime<DATEADD(DAY,0-@recordKeepDays,GETDATE())
'
BEGIN TRY
EXEC(@SQL)
END TRY
BEGIN CATCH
PRINT 'HAS ERROR'
END CATCH
PRINT @SQL
FETCH NEXT FROM curRep INTO @DBName,@publication;
END
CLOSE curRep;
DEALLOCATE curRep;
DROP TABLE #Rep;
--===============================================================
END GO

Replication--复制Token的更多相关文章

  1. 浅谈MySQL Replication(复制)基本原理

    1.MySQL Replication复制进程MySQL的复制(replication)是一个异步的复制,从一个MySQL instace(称之为Master)复制到另一个MySQL instance ...

  2. Chapter 17 Replication 复制

    Chapter 17 Replication 复制 Table of Contents 17.1 Replication Configuration 17.2 Replication Implemen ...

  3. Redis的Replication(复制)

    文件并发(日志处理)--队列--Redis+Log4Net 分布式中使用Redis实现Session共享(二) http://www.cnblogs.com/stephen-liu74/archive ...

  4. Active Directory Replication(复制)

    KCC(The Knowledge Consistency Checker)知识一致性检查器是一个内置的程序,在所有与管理器上运行,为林创建复制拓扑.默认,KCC15分钟间隔运行一次,根据当时存活的最 ...

  5. Windows 下MySql Replication(复制)配置

    环境准备 到官网下载mysql-installer-web-community-5.7.21.0.msi并安装,选择MySql Workbench,记录安装时root输入的密码. 需要安装在两台机器上 ...

  6. 在Docker平台实现MySQL Replication(复制)

    MySQL Replication提供了数据库之间复制数据的功能,通过这个功能可以让一个数据库的数据更改自动同步到另外一个数据库.通常用这个功能来实现数据备份.数据容灾.数据冗余,进一步实现数据的读写 ...

  7. MongoDB基础之九 replication复制集

    准备工作:创建目录 mkdir -p /home/m17 //home/m18 /home/m19 /home/mlog 1:启动3个实例,且声明实例属于某复制集 # ./bin/mongod --d ...

  8. MySQL 5.6 Replication 复制 FAQ

    原文请参照MySQL官方文档Reference Manual,版本5.6.10. 复制功能使得数据可以从一个MySQL数据库(master主库)复制到另一个或多个MySQL数据库(slave从库).缺 ...

  9. mysql replication 复制的一些问题

    1   过大的复制延迟 mysql 的复制延迟是一个常见问题,现在已经有一些解决方案,如淘宝开发的一些工具 2 没有磁盘空间 复制导致磁盘空间塞满,二进制日志.中继日志或临时文件把磁盘塞满,slave ...

  10. Redis 复制、Sentinel的搭建和原理说明

    背景: Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端) ...

随机推荐

  1. PHP中 LFI Local File Include,本地文件包 漏洞

    在allow_url_include=On就是远程文件包含了,假设这里为off,那就只能本地包含了. 1.       包含上传文件 只要目标服务器支持上传,不管是jpg,txt,gif等都可以,在其 ...

  2. Java_try,catch,finally return之间的执行顺序

    以往认为函数只要执行到return语句便会返回结果并终止,然而这时错误的,因为这存在特例. 掌握下面几条原则就可以完全解决“当try.catch.finally遭遇return”的问题. 原则:1.f ...

  3. 工具类APP

    应用名称 工具S 英文名称 未填写 应用描述 工具类APP 英文描述 未填写 应用官网 this 应用图标  

  4. surgemq 添加ssl

    surgemq添加ssl 1.MQTT协议 消息发布订阅功能的消息队列协议 报文组成: 固定报头(控制报文类型)+可变报头(协议名称.协议级别.连接标志.保持连接)+有效载荷(clentId+will ...

  5. 机器学习--聚类系列--K-means算法

    一.聚类 聚类分析是非监督学习的很重要的领域.所谓非监督学习,就是数据是没有类别标记的,算法要从对原始数据的探索中提取出一定的规律.而聚类分析就是试图将数据集中的样本划分为若干个不相交的子集,每个子集 ...

  6. WPF根据ScrollViewer的滚动条出现与否来设置触发器Trigger

    先看一段代码 <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource ...

  7. SparkSQL简介

    1.SparkSQL的发展历程 1.1 Hive and Shark SparkSQL的前身是Shark,给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具,Hive应运而生,它 ...

  8. [CQOI 2018]破解D-H协议

    Description 题库链接 给出 \(A,B,P,g\) ,\(g\) 是 \(P\) 的原根,求出 \(A\equiv g^a\pmod{P}\) , \(B\equiv g^b\pmod{P ...

  9. 从数据库表中随机获取N条记录的SQL语句

    Oracle: select * from (select * from tableName order by dbms_random.value) where rownum < N MS SQ ...

  10. Func的介绍——c#封装的代理

    经常看到  Func<int, bool>...这样的写法,看到这样的就没有心思看下去了.我们学技术还是需要静下心来. 对Func<int,bool>的Func转到定义看它的解 ...