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_MSrefresh_publisher_idrange(nvarchar @qualified_object_name, uniqueidentifier @subid
, uniqueidentifier @artid
, tinyint @ranges_needed
, bit @refresh_check_constraint)
MetaData:
-- this proc will refresh the local publisher's range
create procedure sys.sp_MSrefresh_publisher_idrange
@qualified_object_name nvarchar(517),
@subid uniqueidentifier, -- pubid of the publisher whose range is to be refreshed.
@artid uniqueidentifier, -- though the artid can be derived from the @qualified_object_name, we will take it as a parameter to do one less query
@ranges_needed tinyint, -- 0=none needed, 1=one range needed, 2=both ranges needed
@refresh_check_constraint bit
as
declare @range_begin numeric(38,0)
declare @range_end numeric(38,0)
declare @next_range_begin numeric(38,0)
declare @next_range_end numeric(38,0)
declare @retcode int
exec @retcode = sys.sp_MSreplcheck_publish
if @@error<>0 or @retcode<>0
return 1
if @ranges_needed=0
return 0
if @artid is NULL
begin
select @artid=artid from dbo.sysmergearticles where objid=object_id(@qualified_object_name)
if @artid is NULL
begin
RAISERROR (20027, 16, -1, @qualified_object_name)
RETURN (1)
end
end
select @range_begin = range_begin,
@range_end = range_end,
@next_range_begin = next_range_begin,
@next_range_end = next_range_end
from dbo.MSmerge_identity_range where artid=@artid and subid=@subid and is_pub_range=0
exec @retcode = sys.sp_MSget_new_idrange
@qualified_object_name,
@artid,
@range_begin output,
@range_end output,
@next_range_begin output,
@next_range_end output,
2, -- subscriber range. This is the publisher's local range.
@ranges_needed
if @@error<>0 or @retcode<>0
begin
raiserror(21197, 16, -1)
return 1
end
if @refresh_check_constraint=1 and @qualified_object_name is not NULL
begin
exec @retcode = sys.sp_MSrefresh_idrange_check_constraint @qualified_object_name, @artid, @range_begin, @range_end, @next_range_begin, @next_range_end, @ranges_needed
if @@error<>0 or @retcode<>0
begin
raiserror(21197, 16, -1)
return 1
end
end
update dbo.MSmerge_identity_range
set range_begin = @range_begin,
range_end = @range_end,
next_range_begin = @next_range_begin,
next_range_end = @next_range_end
where subid=@subid and artid=@artid and is_pub_range=0
if @@ERROR<>0
begin
raiserror(21197, 16, -1)
return 1
end
-- also update on the distributor the identity range that was just allocated to the publisher
-- we will do this only for the root publisher. When a republisher gets restored from backup
-- it should merge with its root publisher to get the information on what ranges were allocated.
exec @retcode = sys.sp_MSmerge_log_idrange_alloc_on_distributor
@subid,
@artid,
0, -- is_pub_range 0 because in Yukon publisher's local allocation is the size of the sub range.
@ranges_needed,
@range_begin,
@range_end,
@next_range_begin,
@next_range_end
return 0
No comments:
Post a Comment