dbo.QBM_PConstraintFKDrop

SQL_STORED_PROCEDURE

Created 2025-06-27T17:57:00.480 · modified 2026-04-14T23:14:10.020 · source: live DB sys.objects/sys.sql_expression_dependencies.

Open formatted source/search result

Parameters

NameTypeOutput
@tablepatternnvarcharno
@ConstraintPatternnvarcharno
@ParentTablePatternnvarcharno

Referenced objects

SchemaObjectColumn/minorClass
DialogDatabaseOBJECT_OR_COLUMN
QBM_PExecuteSQLWithRetry_LLPOBJECT_OR_COLUMN
QBM_PJournalOBJECT_OR_COLUMN
QBM_PSessionErrorAddOBJECT_OR_COLUMN
QBM_PSessionErrorCleanOBJECT_OR_COLUMN
dboQBM_FCVIntToStringOBJECT_OR_COLUMN
dboQBM_FGISessionErrorIsDeadlockOBJECT_OR_COLUMN
dboQBM_FGISessionErrorRethrowOBJECT_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_PConstraintFKDrop (@tablepattern nvarchar(64), @ConstraintPattern nvarchar(64), @ParentTablePattern nvarchar(64) = '%'
2 ) as begin declare @TableName varchar(64)  declare @constraintname varchar(64) declare @ownername varchar(64) declare @sqlcmd nvarchar(max) declare @lauf
3 int = 1 declare @ErrorMessage nvarchar(4000) declare @ErrorSeverity int declare @ErrorState int declare @LockRetry bit declare @DebugLevel char(1) = 'W'
4 declare @DebugSwitch int = 0 declare @MessageType varchar(1) = 'W' declare @elementsToDrop table (TableName varchar(64) collate database_default , ConstraintName
5 varchar(64) collate database_default , OwnerName varchar(64) collate database_default ) declare @ElementsAffected int = 0 declare @JournalMessage nvarchar
6(1000) declare @JournalProcedureExists bit = 0 declare @CountElementsChanged int = 0 declare @FehlerAufgetreten bit = 0 SET XACT_ABORT OFF BEGIN TRY if
7 exists (select top 1 1 from sys.objects o where o.name = 'QBM_PJournal' and type = 'P' ) begin select @JournalProcedureExists = 1 end  if exists (select
8 top 1 1 from sys.tables t where t.name = 'DialogTable' collate database_default ) begin  select @SQLcmd = '
9			select c.name, fk.name, o.name
10			from sys.foreign_keys fk join sys.objects c on c.object_id = fk.parent_object_id
11									join sys.objects p on p.object_id = fk.referenced_object_id
12									join sys.schemas o on c.schema_id = o.schema_id
13														and dbo.QBM_FGIObjectIsDropable (o.schema_id)=1
14									join DialogTable dt with (readpast) on c.name = dt.TableName  collate database_default
15			where fk.type = ''F''
16				and fk.name like '''
17 + @Constraintpattern + '''  collate database_default
18				and c.name like ''' + @Tablepattern+ '''  collate database_default
19				and p.name like ''' 
20+ @ParentTablePattern+ '''  collate database_default
21			' end else begin  select @SQLcmd = '
22			select c.name, fk.name, o.name
23			from sys.foreign_keys fk join sys.objects c on c.object_id = fk.parent_object_id
24									join sys.objects p on p.object_id = fk.referenced_object_id
25									join sys.schemas o on c.schema_id = o.schema_id
26														and dbo.QBM_FGIObjectIsDropable (o.schema_id)=1
27													and o.name = ''dbo''  collate database_default
28			where fk.type = ''F''  collate database_default
29				and fk.name like '''
30 + @Constraintpattern + '''  collate database_default
31				and c.name like ''' + @Tablepattern+ '''  collate database_default
32				and p.name like ''' 
33+ @ParentTablePattern+ '''  collate database_default
34			' end if @DebugSwitch > 0 begin print @sqlcmd end insert into @elementsToDrop(TableName, ConstraintName
35, OwnerName) exec sp_executesql @sqlcmd select @ElementsAffected = @@ROWCOUNT select @LockRetry = 5 while @LockRetry > 0 begin  select @lauf = 1 select
36 @constraintname = '#' while @constraintname > ' ' and @lauf > 0 begin select @constraintname = null select top 1 @constraintname = td.ConstraintName ,
37 @ownerName = td.OwnerName , @TableName = td.TableName from @elementsToDrop td if @constraintname is null begin select @lauf = 0 select @LockRetry = 0 
38continue end select @sqlcmd = concat( N'alter table ' , @ownername , '.' , @TableName , N' drop constraint '  , ' if exists ' , @Constraintname , nchar
39(13) , nchar(10) ) if @JournalProcedureExists = 1 begin exec QBM_PJournal @SQLcmd, @@PROCID, 'D', @DebugLevel end if @DebugSwitch > 0 begin print @sqlcmd
40 end BEGIN TRY  exec QBM_PExecuteSQLWithRetry_LLP @SQLStatement = @SQLcmd , @LockTimeout_ms = 2500 , @MaxWaitTimeForLock_s = 15.0 , @ProcIDForJournal =
41 default , @HandleErrorSilent = 0 , @DeadlockPriority = 5  , @ExecuteWithTransact = 0 delete  @elementsToDrop from @elementsToDrop td where td.TableName
42 = @TableName and td.ConstraintName = @constraintname and td.OwnerName = @ownerName select @CountElementsChanged += 1 exec QBM_PSessionErrorClean END TRY
43 BEGIN CATCH exec QBM_PSessionErrorAdd default, @sqlcmd if dbo.QBM_FGISessionErrorIsDeadlock(default) = 1 begin select @LockRetry -= 1 if @JournalProcedureExists
44 = 1 begin exec QBM_PJournal 'SessionError', @@PROCID, 'W', @DebugLevel end select @Errormessage = null waitfor delay '00:00:00.500' end else begin select
45 @FehlerAufgetreten = 1 if @JournalProcedureExists = 1 begin exec QBM_PJournal 'SessionError', @@PROCID, 'E', @DebugLevel end select @lauf = 0 select @LockRetry
46 = 0 end END CATCH end  end  if @CountElementsChanged > 0 and @JournalProcedureExists = 1 begin select @JournalMessage = '#LDS#System elements modified by {0}, pattern {1}, elements affected {2}.|'
47 + isnull(OBJECT_NAME(@@procid), '') + '|' + @tablepattern + '|' + dbo.QBM_FCVIntToString(@CountElementsChanged) + '|'  if not exists (select top 1 1 from
48 DialogDatabase where IsMainDatabase = 1 and UpdatePhase <> 0) and not exists (select top 1 1 from sys.tables t with (readpast) join sys.columns c with
49 (readpast) on t.object_id = c.object_id where t.name = 'DialogDatabase' and c.name = 'InitialMigrationRunning' ) begin exec QBM_PJournal @JournalMessage
50, @@procid, @MessageType, @DebugLevel, 20 end else begin  exec QBM_PJournal @JournalMessage, @@procid, 'I', 'I' end end END TRY BEGIN CATCH exec QBM_PSessionErrorAdd
51 default END CATCH if @FehlerAufgetreten = 1 begin declare @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow() RAISERROR (@Rethrow, 18, 1) WITH NOWAIT
52 end end 
53

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:14:10.020

has TRY/CATCH error handling

Summary: calls QBM_PJournal, QBM_PExecuteSQLWithRetry_LLP, QBM_PSessionErrorClean, QBM_PSessionErrorAdd; writes INSERT into; reads/joins sys, DialogTable, DialogDatabase

Declared parameters

ParameterTypeDirection
@tablepatternnvarchar(64)input
@ConstraintPatternnvarchar(64)input
@ParentTablePatternnvarchar(64)input

DML targets

INSERT into

Read/join references

Config/session

Config: None extracted.

Session: None extracted.

DBQueue/tasks

None extracted.

Temp tables / referenced variables

Temp: #LDS #System

Variables: @tablepattern @ConstraintPattern @ParentTablePattern @TableName @constraintname @ownername @sqlcmd @lauf @ErrorMessage @ErrorSeverity @ErrorState @LockRetry @DebugLevel @DebugSwitch @MessageType @elementsToDrop @ElementsAffected @JournalMessage @JournalProcedureExists @CountElementsChanged @FehlerAufgetreten @SQLcmd @Constraintpattern @Tablepattern @ROWCOUNT @ownerName @Constraintname @PROCID @SQLStatement @LockTimeout_ms @MaxWaitTimeForLock_s @ProcIDForJournal @HandleErrorSilent @DeadlockPriority @ExecuteWithTransact @Errormessage @procid @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_PColumnChangeDataTypeSQL expression dependencyOBJECT_OR_COLUMN
dbo.QBM_PMakeConstraintSQL expression dependencyOBJECT_OR_COLUMN
dbo.QBM_PTableDropSQL expression dependencyOBJECT_OR_COLUMN
dbo.QBM_PTableReloadSQL expression dependencyOBJECT_OR_COLUMN
dbo.QBM_PColumnChangeDataTypesource text referencehas TRY/CATCH error handling
dbo.QBM_PMakeConstraintsource text referencehas TRY/CATCH error handling
dbo.QBM_PTableDropsource text referencehas TRY/CATCH error handling
dbo.QBM_PTableReloadsource text referenceinserts DBQueue tasks, has TRY/CATCH error handling