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_MSrepl_getpkfkrelation(nvarchar @filtered_table, nvarchar @joined_table)
MetaData:
create procedure sys.sp_MSrepl_getpkfkrelation
@filtered_table nvarchar(400),
@joined_table nvarchar(400)
as
declare @pk_fk_relationships table (filtered_table_column sysname, joined_table_column sysname)
declare @basecol sysname
, @joincol sysname
, @basecolid int
, @joincolid int
, @keycnt int
, @base_columns varbinary(128)
, @join_columns varbinary(128)
, @keyindex int
, @retcode smallint
, @dri_rowcount int
, @constid int
, @base_objid int
, @join_objid int
exec @retcode = sys.sp_MSreplcheck_publish
if @@ERROR <> 0 or @retcode <> 0
return(1)
select @base_objid = object_id(@filtered_table), @join_objid = object_id(@joined_table)
select @constid = object_id,
@keycnt = (select count(*) from sys.foreign_key_columns k where k.constraint_object_id = f.object_id)
from sys.foreign_keys f
where f.parent_object_id = @base_objid and f.referenced_object_id = @join_objid
select @dri_rowcount = @@rowcount
-- Loop over keys --
set @keyindex = 1
while @keyindex <= @keycnt
begin
-- Get the column names --
-- also pass in vertical partitioning binary to excluded columns that are not in the current partition --
--
exec sys.sp_MSindexcolfrombin @base_objid, @keyindex, @basekeys, @basecol output, NULL
if @@ERROR<>0 return (1)
exec sys.sp_MSindexcolfrombin @join_objid, @keyindex, @joinkeys, @joincol output, NULL
if @@ERROR<>0 return (1)
--
select @basecolid = parent_column_id, @joincolid = referenced_column_id
from sys.foreign_keys f, sys.foreign_key_columns k
where f.parent_object_id = @base_objid and
f.referenced_object_id = @join_objid and
k.constraint_object_id = f.object_id and
k.constraint_column_id = @keyindex
select @basecol = name from sys.columns where object_id = @base_objid and column_id = @basecolid
select @joincol = name from sys.columns where object_id = @join_objid and column_id = @joincolid
if @basecol is not NULL and @joincol is not NULL
begin
select @basecol = quotename(@basecol), @joincol = quotename(@joincol)
insert into @pk_fk_relationships (filtered_table_column, joined_table_column)
values (@basecol, @joincol)
end
-- move on to the next key --
set @keyindex = @keyindex + 1
end
select * from @pk_fk_relationships
return (0)
No comments:
Post a Comment