Home Microsoft SQL Server DigiMailing iRN Contact
    Keyword



sys.sp_MShelptracertokenhistory

  No additional text.


Syntax


-- Name:
--		sp_MShelptracertokenhistory

-- Description:
--		This procedure is used by the UI to retrieve the tracer token history.
--		Calculates and returns a list of the subscribers, the distribution_latency,
--		subscriber_latency and the overall_latency. NULL is used for any latency
--		statistic that can not be calculated due to insufficient data (such as
--		a tracer record not having arrived at the subscriber). Values are in seconds.

-- Parameters:
--		@publisher		sysname
--		@publisher_db	sysname
--		@publication	sysname
--		@tracer_id		varchar(22) 	lsn of the tracer record to return history for
--											

-- Returns:
--		0 - succeeded
--      1 - failed

-- Result:
--		(see description)

-- Security:
--		DBO of distribution db (used by the UI)
-- Requires Certificate signature for catalog access

create procedure sys.sp_MShelptracertokenhistory
(
	@publisher		sysname,
	@publisher_db	sysname,
	@publication	sysname,
	@tracer_id		int
)
as
begin
	declare @retcode 				int,
			@publication_id			int,
			@distributor_latency	bigint,
			@subscriber_latency		bigint,
			@overall_latency		bigint,
			@publisher_commit		datetime,
			@distributor_commit		datetime,
			@subscriber				sysname,
			@subscriber_db			sysname,
			@subscriber_commit		datetime,
			@distribution_db		sysname

	declare @tracer_history table(distributor_latency bigint, subscriber sysname, subscriber_db sysname, subscriber_latency bigint, overall_latency bigint)

	select @distribution_db = db_name()
	
	
	-- security check.
	-- User must be member of 'replmonitor' role in distribution database.
	
	exec @retcode = sys.sp_MSrepl_DistributorReplMonitorAccess @distribution_db = @distribution_db
	if @retcode != 0 or @@error != 0
	    return 1

	-- Has to be executed from distribution database
	if sys.fn_MSrepl_isdistdb (@distribution_db) != 1
	begin
		-- sp_MSispeertopeeragent can only be executed in the distribution database.
		raiserror (21482, 16, -1, 'sp_MShelptracertokens', 'distribution')
		return 1
	end
	
	-- check to see if the publication exists
	select @publication_id = msp.publication_id
		from dbo.MSpublications msp
			join sys.servers ss
				on msp.publisher_id = ss.server_id
		where UPPER(ss.name) = UPPER(@publisher)
			and msp.publisher_db = @publisher_db
			and msp.publication = @publication

	if @publication_id is NULL
	begin
		-- Publication 'publication' does not exist.
		raiserror(21200, 16, -1, @publication)
		return 1
	end
	
	select @publisher_commit = publisher_commit,
			@distributor_commit = distributor_commit
		from MStracer_tokens
		where publication_id = @publication_id
			and tracer_id = @tracer_id
	
	-- the publisher commit should never be null
	-- if we have a valid parent tracer LSN
	if @publisher_commit is NULL
	begin
		-- The tracer token id (%d) could not be found for publisher:%s, database:%s, publication:%s.
		raiserror(20688, 16, -1, @tracer_id, @publisher, @publisher_db, @publication)
		return 1
	end
	
	-- calculate the distributor latency
	select @distributor_latency = datediff(ss, @publisher_commit, @distributor_commit)

	-- gather remaining latency information
	declare tracer_history_cursor cursor fast_forward for
		select distinct syss.name,
				msda.subscriber_db,
				msth.subscriber_commit
			from MStracer_history msth
				join MSdistribution_agents msda
					on msth.agent_id = msda.id
				join sys.servers syss
					on msda.subscriber_id = syss.server_id
			where msth.parent_tracer_id = @tracer_id
	
	open tracer_history_cursor

	fetch next from tracer_history_cursor into @subscriber, @subscriber_db, @subscriber_commit
	while (@@fetch_status <> -1)
	begin
		-- calculate the subscriber latency
		select @subscriber_latency = datediff(ss, @distributor_commit, @subscriber_commit)
		
		-- calculate the overall latency
		select @overall_latency = @distributor_latency + @subscriber_latency
		
		-- add history row to the temp table
		insert into @tracer_history
		(
			distributor_latency,
			subscriber,
			subscriber_db,
			subscriber_latency,
			overall_latency
		)
		values
		(
			@distributor_latency,
			@subscriber,
			@subscriber_db,
			@subscriber_latency,
			@overall_latency
		)

		fetch next from tracer_history_cursor into @subscriber, @subscriber_db, @subscriber_commit
	end

	close tracer_history_cursor
	deallocate tracer_history_cursor
	
	-- return the tracer history information
	select distributor_latency,
			subscriber,
			subscriber_db,
			subscriber_latency,
			overall_latency
		from @tracer_history
		order by overall_latency desc,
				subscriber_latency desc,
				distributor_latency desc
	
	return 0
end

 
Last revision 2008RTM
See also

  sp_helptracertokenhistory (Procedure)
sp_MShelptracertokens (Procedure)
       



News

  Query a named instance
Sybase+ASE+silent+install
SQL 2008 R2
Deprecated procedures in SQL2008
Reporting Services item-level role definitions
Create all your missing indexes
Converting datetime field
Start MSSQL Server Profiler at time
Replicating MSSQL Server views
Exploring Microsoft Sharepoint
The OLE DB provider "SQLNCLI10" for linked server indicates.
Mobile solar charger
Oracle to SQL Server replication
Cannot insert the value NULL into column
Undocumented Microsoft SQL Server 2008
VMware
Zoekmachine optimalisatie
SQL Servers hidden objects
FckEditor
Flash in Ajax
De hype die AJAX heet
Barcode scannen
MySQL; Gratis, makkelijk en snel!
PHP
sIFR; de combinatie tussen HTML en Flash