May 10, 2012

sp_MSdeletepeerconflictrow (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_MSdeletepeerconflictrow(nvarchar @originator_id
, nvarchar @origin_datasource
, nvarchar @tran_id
, nvarchar @row_id
, nvarchar @conflict_table)

MetaData:

   
create procedure sys.sp_MSdeletepeerconflictrow
(
@originator_id nvarchar(32) = '%' ,-- int
@origin_datasource nvarchar(255) = '%', -- int
@tran_id nvarchar(40) = '%', -- varbinary(16)
@row_id nvarchar(19) = '%', -- timestamp
@conflict_table nvarchar(270)
)
as
begin
set nocount on
declare @retcode int
,@cmd nvarchar(4000)
,@startoffset int
,@table sysname
,@schema sysname
,@whcmd nvarchar(4000) = N'(__$row_id is not null) '


--
-- Security check. restrict to 'sysadmin' and member of db_owner role
--
exec @retcode = sys.sp_MSreplcheck_publish
if @@ERROR <> 0 or @retcode <> 0
return (1)

if (@conflict_table is NULL)
begin
raiserror(14043, 16, 1, '@conflict_table', 'sp_MSdeletepeerconflictrow')
return (1)
end
--
-- check if the conflict table is owner qualified
-- and build the delete string as necessary
--
select @table = PARSENAME(@conflict_table, 1),
@schema = PARSENAME(@conflict_table, 2)

begin tran
save tran tr_deletepeerconflictrow

if (@row_id != N'%') -- delete the corresponding winner or loser record
begin
select @cmd = N'delete ' + ISNULL(NULLIF(QUOTENAME(@schema) + N'.', N'.'), N'') + QUOTENAME(@table) + N'
where __$row_id in (
select __$row_id
from '
+ ISNULL(NULLIF(QUOTENAME(@schema) + N'.', N'.'), N'') + QUOTENAME(@table) + N'
where __$change_id = '
+ @row_id + N'
union
select __$change_id
from '
+ ISNULL(NULLIF(QUOTENAME(@schema) + N'.', N'.'), N'') + QUOTENAME(@table) + N'
where __$row_id = '
+ @row_id + N' and __$change_id is not null)'
execute (@cmd)
if @@error <> 0
goto UNDO
end

select @cmd = 'delete ' + ISNULL(NULLIF(QUOTENAME(@schema) + N'.', N'.'), N'') + QUOTENAME(@table)

if (@originator_id != N'%')
begin
select @whcmd = @whcmd + N' and __$originator_id = ' + QUOTENAME(@originator_id, '''')
end
if (@origin_datasource != N'%')
begin
select @whcmd = @whcmd + N' and __$origin_datasource = ' + QUOTENAME(@origin_datasource, '''')
end
if (@tran_id != N'%')
begin
select @whcmd = @whcmd + N' and __$tranid = ' + QUOTENAME(@tran_id, '''')
end
if (@row_id != N'%')
begin
select @whcmd = @whcmd + N' and __$row_id = ' + @row_id -- delete the specified record: either loser or winner
end
select @cmd = @cmd + N' where ' + @whcmd
execute (@cmd)
if @@error <> 0
goto UNDO

commit tran
return (0)

UNDO:
rollback tran tr_deletepeerconflictrow
commit tran

raiserror(21542, 16, 1, @@error, 'sp_MSdeletepeerconflictrow')
return (1)

end

No comments:

Post a Comment

Total Pageviews