dbo.QBM_PCustomSQLDependencyFill

SQL_STORED_PROCEDURE

Created 2025-06-27T18:01:00.623 · modified 2026-04-14T23:20:32.063 · source: live DB sys.objects/sys.sql_expression_dependencies.

Open formatted source/search result

Parameters

NameTypeOutput
No parameters.

Referenced objects

SchemaObjectColumn/minorClass
QBM_PExecuteSQLWithRetry_LLPOBJECT_OR_COLUMN
QBM_PSessionErrorAddOBJECT_OR_COLUMN
QBM_PSessionErrorCleanOBJECT_OR_COLUMN
QBMCustomSQLOBJECT_OR_COLUMN
dboQBM_FGISessionErrorRethrowOBJECT_OR_COLUMN
dboQBM_FSQRemoveCommentOBJECT_OR_COLUMN

Source excerpt

First extracted SQL definition lines from the exported source. Use the full source page for complete context.

Open full formatted source

1   create   procedure QBM_PCustomSQLDependencyFill as begin declare @Scriptname nvarchar(255) declare @SQLOrig nvarchar(max) declare @SQLRepl nvarchar
2(max) declare @Posi int declare @merken table (UID_QBMCustomSQL varchar(38) collate database_default , scriptname nvarchar(255) collate database_default
3, countDeps int, SortOrder int , ScriptCode nvarchar(max)collate database_default, primary key (UID_QBMCustomSQL) ) declare @work table (UID_QBMCustomSQL
4 varchar(38) collate database_default , scriptname nvarchar(255) collate database_default, countDeps int, SortOrder int , ScriptCode nvarchar(max)collate
5 database_default, primary key (UID_QBMCustomSQL) ) declare @lauf int declare @AnzahlObjekte int declare @CountDeps_neu int declare @Sortorder_neu int 
6declare @Geaendert int declare @Schema_Id int declare @AllesOK int  declare @UID_QBMCustomSQL varchar(38) declare @DebugSwitch int = 0 declaRE @CountItems
7 INT declare @XUser nvarchar(64) = object_name(@@procid) declare @Xdate datetime = getutcdate() SET XACT_ABORT OFF BEGIN TRY select @AllesOK = 1 select
8 top 1 @Schema_Id = schema_id from sys.schemas where name = N'dbo' if @DebugSwitch > 0 begin print 'Start ' + convert(varchar(64), getutcdate(), 121) end
9 insert into @merken(UID_QBMCustomSQL, scriptname, CountDeps, SortOrder) select max(cs.uid_QBMCustomSQL), cs.scriptname, isnull(count(distinct v.object_id
10), 0), 1 from QBMCustomSQL cs join sys.objects s on cs.scriptname = s.name collate database_default left outer join sys.sql_dependencies d on s.object_id
11 = d.object_id left outer join sys.objects v  on d.referenced_major_id = v.object_id left outer join QBMCustomSQL vs on v.name = vs.Scriptname collate 
12database_default and v.schema_id = @Schema_Id where cs.scriptname <> isnull(vs.scriptname, N'') and s.schema_id = @Schema_Id and cs.xtouched <> 'F' and
13 cs.scripttype in ('P', 'F', 'V', 'T', 'N') and cs.scriptname not in ('QBM_ZCustomSQLFill', OBJECT_NAME(@@procid)) group by cs.scriptname select @AnzahlObjekte
14 = count(*) from @merken if @DebugSwitch > 0 begin print '@merken gefüllt ' + convert(varchar(64), getutcdate(), 121) end update @merken set ScriptCode
15 = dbo.QBM_FSQRemoveComment(sc.Scriptcode) from @merken m join qbmCustomsql sc on sc.UID_QBMCustomSQL = m.UID_QBMCustomSQL update @merken set SortOrder
16 = patindex(N'%create[ ' + nchar(9) + N']%', Scriptcode) if @DebugSwitch > 0 begin print '@merken dekommentiert ' + convert(varchar(64), getutcdate(), 
17121) end delete  @merken where isnull(SortOrder, 0) = 0 select @CountItems = @@ROWCOUNT if @DebugSwitch > 0 begin print 'sätze ohne create gelöscht ' +
18 str(@CountItems) end update @merken set ScriptCode = case  when SortOrder = 1 then N'alter' + substring(ScriptCode, 7, 1000000) else  substring(ScriptCode
19,1, SortOrder -1)+ N'alter' + substring(ScriptCode, @posi+6, 1000000) end update @merken set SortOrder = 1 if @DebugSwitch > 0 begin print '@merken mit alter '
20 + convert(varchar(64), getutcdate(), 121) end select @lauf = 1 while @lauf <= @AnzahlObjekte * 2 and @AllesOK = 1 begin select @geaendert = 0 if @DebugSwitch
21 > 0 begin print '####################### neuer Durchlauf '+str(@lauf) + str(@AnzahlObjekte) end  delete  @work  insert @work(ScriptCode, SortOrder, UID_QBMCustomSQL
22, countDeps, scriptname) select ScriptCode, SortOrder, UID_QBMCustomSQL, countDeps, scriptname from @merken m  while exists (select top 1 1 from @work 
23) and @AllesOK = 1 BEGIN select top 1 @UID_QBMCustomSQL = w.UID_QBMCustomSQL , @Scriptname = w.scriptname , @SQLOrig = w.ScriptCode from @work w order 
24by w.SortOrder, w.scriptname desc if @DebugSwitch > 0 begin print @Scriptname end  BEGIN TRY BEGIN TRY exec QBM_PExecuteSQLWithRetry_LLP @SQLStatement 
25= @SQLRepl , @LockTimeout_ms = 50 , @MaxWaitTimeForLock_s = 2 , @ProcIDForJournal = @@procid , @HandleErrorSilent = 0 exec QBM_PSessionErrorClean END TRY
26 BEGIN CATCH  if @DebugSwitch > 0 begin print @scriptname print isnull(ERROR_MESSAGE() , '<no message>') end update qbmCustomSQL set XTouched = 'F' , XDateUpdated
27 = @Xdate , XUserUpdated = @XUser where UID_QBMCustomSQL = @UID_QBMCustomSQL delete  @merken where UID_QBMCustomSQL = @UID_QBMCustomSQL continue  END CATCH
28 END TRY BEGIN CATCH  select @AllesOK = 0 END CATCH  if @AllesOK = 0 begin continue end select @CountDeps_neu = null select @CountDeps_neu = isnull(count
29(distinct v.object_id), 0) from sys.objects s left outer join sys.sql_dependencies d on s.object_id = d.object_id left outer join sys.objects v  on d.referenced_major_id
30 = v.object_id left outer join QBMCustomSQL vs on v.name = vs.Scriptname collate database_default where s.name = @Scriptname and vs.UID_QBMCustomSQL <>
31 @UID_QBMCustomSQL and s.schema_id = @Schema_Id and v.schema_id = @Schema_Id group by s.object_id select @CountDeps_neu = isnull(@CountDeps_neu, 0) select
32 @Sortorder_neu = null select @Sortorder_neu = isnull(max( vm.SortOrder),0) + 1 from sys.objects s left outer join sys.sql_dependencies d on s.object_id
33 = d.object_id left outer join sys.objects v  on d.referenced_major_id = v.object_id left outer join QBMCustomSQL vs on v.name = vs.Scriptname collate 
34database_default left outer join @merken vm on vs.UID_QBMCustomSQL = vm.UID_QBMCustomSQL collate database_default where s.name = @Scriptname and vm.scriptname
35 <> @Scriptname and s.schema_id = @Schema_Id and v.schema_id = @Schema_Id group by s.name select @Sortorder_neu = isnull(@Sortorder_neu, 1) if @DebugSwitch
36 > 0 begin print @scriptname + str(@CountDeps_neu) + str(@Sortorder_neu) end update @merken set countDeps = @CountDeps_neu where UID_QBMCustomSQL = @UID_QBMCustomSQL
37 and countDeps <> @CountDeps_neu if @@rowcount > 0 begin if @DebugSwitch > 0 begin print 'count deps geändert' end select @geaendert = 1 end update @merken
38 set SortOrder = @Sortorder_neu where UID_QBMCustomSQL = @UID_QBMCustomSQL and SortOrder < @Sortorder_neu if @@rowcount > 0 begin if @DebugSwitch > 0 begin
39 print 'SortOrder  geändert' end select @geaendert = 1 end delete  @work where UID_QBMCustomSQL = @UID_QBMCustomSQL END  if @AllesOK = 0 begin continue
40 end if @geaendert = 1 begin select @lauf = @lauf +1 end else begin select @lauf = @AnzahlObjekte * 2 +1 end end  update QBMCustomSQl set SortOrder = m.SortOrder
41 , XDateUpdated = @Xdate , XUserUpdated = @XUser from QBMCustomSQl cu join @merken m on cu.UID_QBMCustomSQl = m.UID_QBMCustomSQL where m.SortOrder <> ISNULL
42(cu.SortOrder, 0) if @DebugSwitch > 0 begin select s.SortOrder, s.ScriptType, s.ScriptName from QBMCustomSQL s order by s.SortOrder end END TRY BEGIN CATCH
43 exec QBM_PSessionErrorAdd default declare @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow() RAISERROR (@Rethrow, 18, 1) WITH NOWAIT END CATCH 
44end 
45

Module relation graph

Loading module relation graph…

Source-derived context

Generated from exported SQL module definitions plus read-only sandbox sys.objects/sys.parameters/sys.sql_expression_dependencies metadata. This is factual source evidence, not a semantic guess.

provenance: SQL definition export provenance: sandbox DB metadata modified: 2026-04-14T23:20:32.063

has TRY/CATCH error handling

Summary: calls QBM_PExecuteSQLWithRetry_LLP, QBM_PSessionErrorClean, QBM_PSessionErrorAdd; writes INSERT into, UPDATE qbmCustomSQL, UPDATE QBMCustomSQl; reads/joins sys, QBMCustomSQL, qbmCustomsql, QBMCustomSQl

Declared parameters

No declared parameters in sys.parameters for this object, or metadata was not available.

DML targets

INSERT into UPDATE qbmCustomSQL UPDATE QBMCustomSQl

Config/session

Config: None extracted.

Session: None extracted.

DBQueue/tasks

None extracted.

Temp tables / referenced variables

Temp: None extracted.

Variables: @Scriptname @SQLOrig @SQLRepl @Posi @merken @work @lauf @AnzahlObjekte @CountDeps_neu @Sortorder_neu @Geaendert @Schema_Id @AllesOK @UID_QBMCustomSQL @DebugSwitch @CountItems @XUser @procid @Xdate @ROWCOUNT @posi @geaendert @SQLStatement @LockTimeout_ms @MaxWaitTimeForLock_s @ProcIDForJournal @HandleErrorSilent @scriptname @rowcount @Rethrow

Referenced by / reverse dependencies

Generated from live DB metadata, FK rows, and exported SQL dependency/source extraction. This is factual linkage evidence, not inferred behavior.

Referencing objectRelationEvidence
dbo.QBM_PCustomSQLSortSQL expression dependencyOBJECT_OR_COLUMN
dbo.QBM_PCustomSQLSortsource text referencehas TRY/CATCH error handling