@@ -784,50 +784,65 @@ BEGIN
784784 IF @Debug = 1 BEGIN PRINT @StringToExecute; END;
785785 EXECUTE sys .sp_executesql
786786 @StringToExecute;
787+ END;
788+
789+ /*
790+ Check for BlitzLockFindings table - runs regardless of whether main table existed
791+ This was moved outside the ELSE block to fix issue where pre-existing deadlocks
792+ table would skip BlitzLockFindings creation, causing synonym errors
793+ Must filter by schema to avoid finding table in wrong schema
794+ Note: @OutputSchemaName is already QUOTENAMEd at this point, so use PARSENAME to get raw name
795+ */
796+ SET @r = NULL ; /* Reset - SELECT with no rows doesn't overwrite variable*/
797+
798+ SELECT
799+ @StringToExecute =
800+ N' SELECT @r = o.name FROM ' +
801+ @OutputDatabaseName +
802+ N' .sys.objects AS o
803+ INNER JOIN ' +
804+ @OutputDatabaseName +
805+ N' .sys.schemas AS s
806+ ON o.schema_id = s.schema_id
807+ WHERE o.type_desc = N' ' USER_TABLE' '
808+ AND o.name = N' ' BlitzLockFindings' '
809+ AND s.name = N' ' ' +
810+ PARSENAME(@OutputSchemaName, 1 ) +
811+ N' ' ' ' ,
812+ @StringToExecuteParams =
813+ N' @r sysname OUTPUT' ;
814+
815+ IF @Debug = 1 BEGIN PRINT @StringToExecute; END;
816+ EXECUTE sys .sp_executesql
817+ @StringToExecute,
818+ @StringToExecuteParams,
819+ @r OUTPUT;
787820
788- /* table created.*/
821+ IF (@r IS NULL ) /* if table does not exist*/
822+ BEGIN
789823 SELECT
824+ @OutputTableFindings =
825+ QUOTENAME(N' BlitzLockFindings' ),
790826 @StringToExecute =
791- N' SELECT @r = o.name FROM ' +
827+ N' USE ' +
792828 @OutputDatabaseName +
793- N' .sys.objects AS o
794- WHERE o.type_desc = N' ' USER_TABLE' '
795- AND o.name = N' ' BlitzLockFindings' ' ' ,
796- @StringToExecuteParams =
797- N' @r sysname OUTPUT' ;
829+ N' ;
830+ CREATE TABLE ' +
831+ @OutputSchemaName +
832+ N' .' +
833+ @OutputTableFindings +
834+ N' (
835+ ServerName nvarchar(256),
836+ check_id INT,
837+ database_name nvarchar(256),
838+ object_name nvarchar(1000),
839+ finding_group nvarchar(100),
840+ finding nvarchar(4000)
841+ );' ;
798842
799843 IF @Debug = 1 BEGIN PRINT @StringToExecute; END;
800844 EXECUTE sys .sp_executesql
801- @StringToExecute,
802- @StringToExecuteParams,
803- @r OUTPUT;
804-
805- IF (@r IS NULL ) /* if table does not exist*/
806- BEGIN
807- SELECT
808- @OutputTableFindings =
809- QUOTENAME(N' BlitzLockFindings' ),
810- @StringToExecute =
811- N' USE ' +
812- @OutputDatabaseName +
813- N' ;
814- CREATE TABLE ' +
815- @OutputSchemaName +
816- N' .' +
817- @OutputTableFindings +
818- N' (
819- ServerName nvarchar(256),
820- check_id INT,
821- database_name nvarchar(256),
822- object_name nvarchar(1000),
823- finding_group nvarchar(100),
824- finding nvarchar(4000)
825- );' ;
826-
827- IF @Debug = 1 BEGIN PRINT @StringToExecute; END;
828- EXECUTE sys .sp_executesql
829- @StringToExecute;
830- END;
845+ @StringToExecute;
831846 END;
832847
833848 /* create synonym for deadlockfindings.*/
0 commit comments