create procedure sys.sp_MScheck_article_order @pubid uniqueidentifier
as
declare @objid int
declare @nickname int
declare @artname sysname
declare @processing_order int
select top 1 @artname = name, @objid = objid, @nickname = nickname, @processing_order = processing_order
from dbo.sysmergearticles
where pubid = @pubid
order by processing_order, nickname
while @objid is not NULL
begin
if exists (select * from sys.foreign_key_columns
where parent_object_id = @objid
and referenced_object_id in
(select objid from dbo.sysmergearticles
where pubid = @pubid
and (
(processing_order = @processing_order and nickname > @nickname)
or
processing_order > @processing_order
)
)
)
begin
RAISERROR(20637, 10, -1, @artname)
goto Finish
end
select @objid = NULL
select @artname = name, @objid = objid, @nickname = nickname, @processing_order = processing_order
from dbo.sysmergearticles
where pubid = @pubid
and (
(processing_order = @processing_order and nickname > @nickname)
or
processing_order > @processing_order
)
order by processing_order, nickname
end
Finish:
return 0