The meta data is from an SQL 2012 Server.
I have posted alot more, find the whole list here.
Goto Definition or MetaData
Definition:
sys.sp_MSdistribution_counters(nvarchar @publisher)MetaData:
CREATE PROCEDURE sys.sp_MSdistribution_counters
(
@publisher sysname -- publication server name --
)
AS
begin
set nocount on
declare @publisher_id smallint
declare @subscriber_id smallint
declare @active_status tinyint
declare @snapshot_bit int
declare @undelivered_commands int
declare @delivered_commands int
declare @delivery_rate float
declare @delivery_latency int
declare @xact_seqno varbinary(16)
declare @agent_id int
--
-- security check
-- only db_owner can execute this
--
if (is_member ('db_owner') != 1)
begin
raiserror(14260, 16, -1)
return (1)
end
select @active_status = 2
select @snapshot_bit = 0x80000000
-- Make sure publisher is defined on distributor
--
select @publisher_id = srvid from master.dbo.sysservers where UPPER(srvname) = UPPER(@publisher)
if @publisher_id is null
return (1)
create table #dist_trans (subscriber_id smallint NOT NULL, undelivered_commands int NOT NULL,
delivered_commands int NOT NULL, delivery_rate float NOT NULL,
delivery_latency int NOT NULL)
declare hc CURSOR LOCAL FAST_FORWARD FOR select distinct agent_id
from dbo.MSsubscriptions
where
publisher_id = @publisher_id and
subscriber_id >= 0 and
status = 2
for read only
open hc
fetch hc into @agent_id
while (@@fetch_status <> -1)
begin
-- Get the lastest numbers from distribution_history
select @xact_seqno = NULL
-- Get latest seqno, rate and latency
select TOP(1) @xact_seqno = xact_seqno,
-- @delivered_commands = delivered_commands,
@delivery_rate = current_delivery_rate,
@delivery_latency = current_delivery_latency
-- from MSdistribution_history with (READPAST)
from MSdistribution_history
where
agent_id = @agent_id and
xact_seqno <> 0x0
order by timestamp DESC
if @xact_seqno IS NULL
select @xact_seqno = 0x00,
@delivery_rate = 0,
@delivery_latency = 0
select TOP(1) @subscriber_id = subscriber_id FROM dbo.MSsubscriptions
where agent_id = @agent_id
-- Get the delivered trans number
select @delivered_commands = 0
select @delivered_commands = isnull(count(*), 0)
from
-- MSrepl_commands rc with (READPAST), dbo.MSsubscriptions s
MSrepl_commands rc, dbo.MSsubscriptions s
where
--
-- Query from sp_MSget_repl_commands
--
s.agent_id = @agent_id and
s.status = @active_status and
rc.publisher_database_id = s.publisher_database_id and
-- rc.publisher_id = s.publisher_id and
-- rc.publisher_db = s.publisher_db and
rc.xact_seqno <= @xact_seqno and
rc.article_id = s.article_id and
rc.partial_command = 0
and
((rc.xact_seqno >= s.subscription_seqno and (rc.type & @snapshot_bit) <> @snapshot_bit) or
rc.xact_seqno = s.subscription_seqno)
-- Get the undelivered trans number
select @undelivered_commands = 0
select @undelivered_commands = isnull(count(*), 0)
from
-- MSrepl_commands rc with (READPAST), dbo.MSsubscriptions s
MSrepl_commands rc , dbo.MSsubscriptions s
where
--
-- Query from sp_MSget_repl_commands
--
s.agent_id = @agent_id and
s.status = @active_status and
rc.publisher_database_id = s.publisher_database_id and
rc.xact_seqno > @xact_seqno and
rc.article_id = s.article_id and
rc.partial_command = 0
and
((rc.xact_seqno >= s.subscription_seqno and (rc.type & @snapshot_bit) <> @snapshot_bit) or
rc.xact_seqno = s.subscription_seqno)
insert into #dist_trans values (@subscriber_id, @undelivered_commands,
@delivered_commands, @delivery_rate, @delivery_latency)
fetch hc into @agent_id
end
close hc
deallocate hc
select 'subscriber' = srvname,
'delivered commands' = sum(delivered_commands),
'undelivered_commands' = sum(undelivered_commands),
'delivery_rate' = sum(delivery_rate),
'delivery_latency' = (select isnull(avg(delivery_latency), 0) from #dist_trans, master.dbo.sysservers where
srvname = s1.srvname and delivery_latency > 0)
from #dist_trans, master.dbo.sysservers s1
where subscriber_id = srvid
group by srvname
drop table #dist_trans
end
No comments:
Post a Comment