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_MSpeersendtopologyinfo(int @request_id, nvarchar @originator
, nvarchar @originator_db
, nvarchar @originator_publication)
MetaData:
create procedure sys.sp_MSpeersendtopologyinfo
(
@request_id int,
@originator sysname,
@originator_db sysname,
@originator_publication sysname
)
as
begin
set nocount on
declare @retcode int,
@cmd nvarchar(max),
@info_cmd nvarchar(max),
@response_srvr sysname,
@response_db sysname,
@connection_info xml,
@distributor sysname,
@distributordb sysname,
@response_originator_id int,
@response_conflict_retention int
-- security check for subscriber
-- Though the work below is related to a publisher, we use
-- a check for the subscriber because this is normally executed
-- by the distribution agent at a subscriber (republisher).
-- this should only be used by peer to peer subscribers.
exec @retcode = sys.sp_MSreplcheck_subscribe
if @@error <> 0 or @retcode <> 0
begin
return 1
end
select @cmd = NULL,
@response_srvr = publishingservername(),
@response_db = db_name()
-- get the distributor information
exec @retcode = sp_helpdistributor @distributor=@distributor out, @distribdb = @distributordb out
if @@error <> 0 or @retcode <> 0
begin
return 1
end
-- the topology information query
select @info_cmd = N'set @p = (
select * from (
select 1 as Tag,
NULL as Parent,
'+quotename(@distributor,'''')+N' as [Publisher!1!Distributor],
'+quotename(@distributordb,'''')+N' as [Publisher!1!DistributorDatabase],
NULL as [Publication!2!Name],
NULL as [Subscription!3!SubscriberName],
NULL as [Subscription!3!SubscriberDatabase],
NULL as [Subscription!3!SubscriptionType]
union all
select 2,1,
'+quotename(@distributor,'''')+N' as [Publisher!1!Distributor],
'+quotename(@distributordb,'''')+N' as [Publisher!1!DistributorDatabase],
p.name,
NULL,
NULL,
NULL
from syspublications as p
group by p.name
union all
select 3,2,
'+quotename(@distributor,'''')+N' as [Publisher!1!Distributor],
'+quotename(@distributordb,'''')+N' as [Publisher!1!DistributorDatabase],
p.name,
s.srvname,
s.dest_db,
s.subscription_type
from syspublications as p join sysarticles as a
on p.pubid = a.pubid
join syssubscriptions as s
on a.artid = s.artid
where s.srvid >= 0
) as universal_table
order by [Publisher!1!Distributor],[Publisher!1!DistributorDatabase],[Publication!2!Name],[Subscription!3!SubscriberName],[Subscription!3!SubscriberDatabase],[Subscription!3!SubscriptionType]
for xml explicit
)';
select @response_originator_id = case when originator_id is NULL then 0 else originator_id end,
@response_conflict_retention = case when conflict_retention is NULL then 0 else conflict_retention end
from syspublications
where name = @originator_publication
begin transaction tr_sp_MSpeersendtopologyinfo
save transaction tr_sp_MSpeersendtopologyinfo
exec sp_executesql
@stmt = @info_cmd,
@params = N'@p as xml output',
@p = @connection_info output;
if @@error <> 0 or @retcode <> 0
goto FAILURE
select @cmd = N'if object_id(N''sys.sp_MSpeerapplytopologyinfo'', ''P'') is not null '+
N'exec sys.sp_MSpeerapplytopologyinfo @request_id=' + cast(@request_id as nvarchar) +
N',@originator=N' + quotename(@originator, '''') +
N',@originator_db=N' + quotename(@originator_db, '''') +
N',@response_srvr=N' + quotename(@response_srvr, '''') +
N',@response_db=N' + quotename(@response_db, '''')+
N',@connection_info=N' + N''''+replace(convert(nvarchar(max), @connection_info), '','''')+N'''' +
N',@response_srvr_version=' + cast(@@microsoftversion as nvarchar) +
N',@response_originator_id=' + cast(@response_originator_id as nvarchar) +
N',@response_conflict_retention=' + cast(@response_conflict_retention as nvarchar)
-- if we are on the originator, then there is no need to forward the cmd, just execute it
if UPPER(@originator) = UPPER(@response_srvr)
and @originator_db = @response_db
begin
exec @retcode = sp_executesql @stmt = @cmd
end
-- if we are not on the originator then we do need to forward the cmd
else
begin
exec @retcode = sys.sp_MSpeertopeerfwdingexec @command = @cmd,
@publication = @originator_publication
end
if @@error <> 0 or @retcode <> 0
goto FAILURE
commit transaction tr_sp_MSpeersendtopologyinfo
return 0
FAILURE:
rollback transaction tr_sp_MSpeersendtopologyinfo
commit transaction
return 1
end
No comments:
Post a Comment