May 24, 2012

sp_MSpeerconflictdetection_statuscollection_sendresponse (Transact-SQL MetaData) Definition

Please note: that the following source code is provided and copyrighted by Microsoft and is for educational purpose only.
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_MSpeerconflictdetection_statuscollection_sendresponse(int @request_id
, nvarchar @publication
, nvarchar @originator_node
, nvarchar @originator_db)

MetaData:

 create procedure sys.sp_MSpeerconflictdetection_statuscollection_sendresponse (  
@request_id int,
@publication sysname,
@originator_node sysname,
@originator_db sysname
)
as
begin

-- security check - should be dbo or sysadmin
declare @retcode int
exec @retcode = sp_MSreplcheck_subscribe
if @@ERROR != 0 or @retcode != 0
return

if sys.fn_MSrepl_istranpublished(db_name(), 1) <> 1
return -- not tran published

declare @peer_node sysname,
@peer_db sysname,
@peer_db_version int,
@options int,
@conflictdetection_enabled bit,
@peer_originator_id int,
@peer_conflict_retention int,
@peer_continue_onconflict bit,
@peer_histids nvarchar(max), -- content of MSpeer_originatorid_history in xml format
@OPT_ENABLED_FOR_P2P int,
@OPT_ENABLED_FOR_P2P_CONFLICTDETECTION int,
@OPT_ENABLED_FOR_P2P_CONTINUE_ONCONFLICT int,
@cmdtxt nvarchar(max)


select @OPT_ENABLED_FOR_P2P = 0x1,
@OPT_ENABLED_FOR_P2P_CONFLICTDETECTION = 0x8,
@OPT_ENABLED_FOR_P2P_CONTINUE_ONCONFLICT = 0x10

select @options = options,
@peer_originator_id = originator_id,
@peer_conflict_retention = conflict_retention
from syspublications
where name = @publication

if (@options is NULL or @options & @OPT_ENABLED_FOR_P2P <> @OPT_ENABLED_FOR_P2P)
return -- not a p2p publication

select @peer_node = publishingservername()
select @peer_db = db_name()

exec @retcode = sys.sp_MSgetdbversion @current_version = @peer_db_version output
if @@error <> 0 or @retcode <> 0
return

if (@options & @OPT_ENABLED_FOR_P2P_CONFLICTDETECTION = @OPT_ENABLED_FOR_P2P_CONFLICTDETECTION)
begin
select @conflictdetection_enabled = 1

if (@options & @OPT_ENABLED_FOR_P2P_CONTINUE_ONCONFLICT = @OPT_ENABLED_FOR_P2P_CONTINUE_ONCONFLICT)
select @peer_continue_onconflict = 1
else
select @peer_continue_onconflict = 0
end
else
begin
select @conflictdetection_enabled = 0,
@peer_originator_id = NULL,
@peer_conflict_retention = NULL,
@peer_continue_onconflict = NULL
end


-- obtain histids
declare @histidtab table (originator_id int, originator_node sysname, originator_db sysname, originator_db_version int, originator_version int)
insert @histidtab
select originator_id, originator_node, originator_db, originator_db_version, originator_version
from MSpeer_originatorid_history
where originator_publication = @publication
if @@error <> 0
return

select @peer_histids = convert(nvarchar(max), (select * from @histidtab as histid for XML auto))
if @@error <> 0
return

-- add root: /peer_histids
select @peer_histids = N'<peer_histids>' + @peer_histids + N'</peer_histids>'


-- construct the command to be forwarded
select @cmdtxt = N'if @@microsoftversion >= 0x0A000000
begin
exec sp_MSpeerconflictdetection_statuscollection_applyresponse
@request_id ='
+ cast(@request_id as nvarchar) + N',
@peer_node = N'
+ QUOTENAME(@peer_node, N'''') + N',
@peer_db = N'
+ QUOTENAME(@peer_db, N'''') + N',
@peer_db_version = '
+ cast(@peer_db_version as nvarchar) + N',
@conflictdetection_enabled = '
+ cast(@conflictdetection_enabled as nvarchar) + N',
@peer_originator_id = '


if @peer_originator_id is NULL
select @cmdtxt = @cmdtxt + N'NULL,'
else
select @cmdtxt = @cmdtxt + cast(@peer_originator_id as nvarchar) + N','

select @cmdtxt = @cmdtxt + N'@peer_conflict_retention = '

if @peer_conflict_retention is NULL
select @cmdtxt = @cmdtxt + N'NULL,'
else
select @cmdtxt = @cmdtxt + cast(@peer_conflict_retention as nvarchar) + N','

select @cmdtxt = @cmdtxt + N'@peer_continue_onconflict = '

if @peer_continue_onconflict is NULL
select @cmdtxt = @cmdtxt + N'NULL,'
else
select @cmdtxt = @cmdtxt + cast(@peer_continue_onconflict as nvarchar) + N','

select @cmdtxt = @cmdtxt + N'@peer_histids = N''' + REPLACE(@peer_histids, N'''', N'''''') + N''',
@originator_node = N'
+ QUOTENAME(@originator_node, N'''') + N',
@originator_db = N'
+ QUOTENAME(@originator_db, N'''') + N'
end'


-- forward the command to apply response
exec sys.sp_MSpeertopeerfwdingexec @command = @cmdtxt, @publication = @publication

return
end

No comments:

Post a Comment

Total Pageviews