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_MSinsertgenerationschemachanges(nvarchar @publication)MetaData:
create procedure sys.sp_MSinsertgenerationschemachanges @publication sysname AS declare @mingen bigint declare @lastrecgen bigint declare @lastrecguid uniqueidentifier declare @lastsentgen bigint declare @lastsentguid uniqueidentifier declare @db_name sysname declare @repid uniqueidentifier declare @pubid uniqueidentifier declare @schemaversion int declare @schemaguid uniqueidentifier declare @schematype int declare @schematext nvarchar(2000) declare @artid uniqueidentifier declare @retcode int set nocount on set @lastrecgen = NULL set @lastsentgen = NULL set @db_name = db_name() -- -- Security Check. -- exec @retcode = sys.sp_MSmerge_validate_publication_presence @publication, @db_name, NULL, @pubid output if @retcode <> 0 or @@error <> 0 return 1 SELECT @repid = subid FROM dbo.sysmergesubscriptions where pubid = @pubid and subid = @pubid if @repid is NULL begin RAISERROR(20021, 16, -1) return (1) end begin tran save TRAN MSinsertgenerationschemachanges select @lastrecgen = max(g.generation) from MSmerge_genhistory g, (select isnull(gen2.generation, gen1.generation) as generation from (select max(generation) as generation from dbo.MSmerge_genhistory where genstatus in (1,2)) as gen1, (select min(generation) as generation from dbo.MSmerge_genhistory where genstatus in (0,4)) as gen2 ) as minopengen where g.generation <= minopengen.generation and g.genstatus in (1,2) if @lastrecgen IS NOT NULL begin select @lastrecguid = guidsrc from dbo.MSmerge_genhistory where generation = @lastrecgen set @artid = NULL set @schematype = 5 -- last rec gen schema type -- select @schematext = 'exec dbo.sp_MSsetlastrecgen ' + '''' + convert(nchar(36), @repid) + '''' + ',' + '''' + convert(nvarchar, @lastrecgen) + '''' + ',' + '''' + convert(nchar(36), @lastrecguid) + '''' if exists (select * from dbo.sysmergeschemachange where pubid = @pubid AND schematype = @schematype) begin -- Select the existing schema guid -- select @schemaversion = schemaversion, @schemaguid = schemaguid from dbo.sysmergeschemachange where pubid = @pubid AND schematype = @schematype -- -- Update the schema change version -- exec @retcode = sys.sp_MSupdateschemachange @pubid, @artid, @schemaversion, @schemaguid, @schematype, @schematext if @@error <> 0 or @retcode <> 0 goto FAILURE end else begin -- Insert the schema change -- select @schemaversion = schemaversion from dbo.sysmergeschemachange if (@schemaversion is NULL) set @schemaversion = 1 else select @schemaversion = 1 + max(schemaversion) from dbo.sysmergeschemachange -- generate a new schema guid -- set @schemaguid = newid() exec @retcode = sys.sp_MSinsertschemachange @pubid, @artid, @schemaversion, @schemaguid, @schematype, @schematext if @@error <> 0 or @retcode <> 0 goto FAILURE end end set @schematype = 17 -- last sent gen schema type -- set @artid = NULL select @schematext = 'exec sys.sp_MScomputelastsentgen ' + '''' + convert(nvarchar(36), @repid) + '''' if exists (select * from dbo.sysmergeschemachange where pubid = @pubid AND schematype = @schematype) begin -- Select the existing schema guid -- select @schemaversion = schemaversion, @schemaguid = schemaguid from dbo.sysmergeschemachange where pubid = @pubid AND schematype = @schematype -- -- Update the schema change version -- exec @retcode = sys.sp_MSupdateschemachange @pubid, @artid, @schemaversion, @schemaguid, @schematype, @schematext if @@error <> 0 or @retcode <> 0 goto FAILURE end else begin -- Insert the schema change -- select @schemaversion = schemaversion from dbo.sysmergeschemachange if (@schemaversion is NULL) set @schemaversion = 1 else select @schemaversion = 1 + max(schemaversion) from dbo.sysmergeschemachange -- generate a new schema guid -- set @schemaguid = newid() exec @retcode = sys.sp_MSinsertschemachange @pubid, @artid, @schemaversion, @schemaguid, @schematype, @schematext if @@error <> 0 or @retcode <> 0 goto FAILURE end COMMIT TRAN RETURN 0 FAILURE: -- UNDONE : This code is specific to 6.X nested transaction semantics -- if @@TRANCOUNT > 0 begin ROLLBACK TRANSACTION MSinsertgenerationschemachanges COMMIT TRANSACTION end RETURN 1
No comments:
Post a Comment