From 93e2804054691c6be37716c0705b6febeb7b18fb Mon Sep 17 00:00:00 2001 From: Christopher Elliott Date: Fri, 22 Apr 2022 18:49:25 -0700 Subject: [PATCH 1/3] Lookup the DB ID by name instead of trusting sys.database --- .../usp_AdaptiveIndexDefrag.sql | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql b/AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql index 7fe7952f..a94e4677 100644 --- a/AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql +++ b/AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql @@ -2,8 +2,8 @@ -- please note that the job that runs AdaptiveIndexDefrag is expecting msdb. As such, change the database context accordingly. -- For deployment in Azure SQL Database, remove or comment the USE statement below. -USE msdb -GO +--USE msdb +--GO SET NOCOUNT ON; @@ -938,7 +938,7 @@ END' BEGIN DECLARE @sqlcmd_CntSrc NVARCHAR(3000), @params_CntSrc NVARCHAR(50), @CountSrc int DECLARE @sqlcmd_CntTgt NVARCHAR(3000), @params_CntTgt NVARCHAR(50), @CountTgt int - DECLARE @dbIDIX int, @hasIXs bit, @hasIXsCntsqlcmd NVARCHAR(3000), @hasIXsCntsqlcmdParams NVARCHAR(50) + DECLARE @dbIDIX int, @dbNameIX sysname, @hasIXs bit, @hasIXsCntsqlcmd NVARCHAR(3000), @hasIXsCntsqlcmdParams NVARCHAR(50) -- What is in working tables plus exceptions that still exist in server SET @sqlcmd_CntSrc = 'SELECT @CountSrc_OUT = COUNT(DISTINCT Working.[dbID]) FROM @@ -962,12 +962,13 @@ WHERE [dbID] IN (SELECT DISTINCT database_id FROM sys.databases sd CREATE TABLE #tblIndexFindInDatabaseList ( [dbID] int + , dbName sysname , hasIXs bit NOT NULL , scanStatus bit NULL ); /* Retrieve the list of databases to loop, excluding Always On secondary replicas */ - SET @sqlcmd_CntTgt = 'SELECT [database_id], 0, 0 -- not yet scanned + SET @sqlcmd_CntTgt = 'SELECT [database_id], name, 0, 0 -- not yet scanned FROM sys.databases WHERE LOWER([name]) = ISNULL(LOWER(@dbScopeIN), LOWER([name])) AND LOWER([name]) NOT IN (''master'', ''tempdb'', ''model'', ''reportservertempdb'',''semanticsdb'') -- exclude system databases @@ -992,7 +993,9 @@ WHERE rs.role = 2 -- Is Secondary WHILE (SELECT COUNT(*) FROM #tblIndexFindInDatabaseList WHERE scanStatus = 0) > 0 BEGIN - SELECT TOP 1 @dbIDIX = [dbID] FROM #tblIndexFindInDatabaseList WHERE scanStatus = 0; + SELECT TOP 1 @dbNameIX = [dbName] FROM #tblIndexFindInDatabaseList WHERE scanStatus = 0; + + SET @dbIDIX = DB_ID(@dbNameIX) SET @hasIXsCntsqlcmd = 'IF EXISTS (SELECT TOP 1 [index_id] from [' + DB_NAME(@dbIDIX) + '].sys.indexes AS si INNER JOIN [' + DB_NAME(@dbIDIX) + '].sys.objects so ON si.object_id = so.object_id @@ -1009,7 +1012,7 @@ BEGIN SET @hasIXsOUT = 1 END ELSE BEGIN SET @hasIXsOUT = 0 END' UPDATE #tblIndexFindInDatabaseList SET hasIXs = @hasIXs, scanStatus = 1 - WHERE [dbID] = @dbIDIX + WHERE [dbName] = @dbNameIX END EXECUTE sp_executesql @sqlcmd_CntSrc, @params_CntSrc, @CountSrc_OUT = @CountSrc OUTPUT @@ -3333,3 +3336,6 @@ PRINT 'Procedure usp_AdaptiveIndexDefrag_Exceptions created (If the defrag shoul PRINT 'All done!' GO + + +EXEC usp_AdaptiveIndexDefrag @debugMode = 1 \ No newline at end of file From a6a812e56226d90391d0f35f008b66fab4ab5f58 Mon Sep 17 00:00:00 2001 From: Christopher Elliott Date: Fri, 22 Apr 2022 18:50:50 -0700 Subject: [PATCH 2/3] Remove debug code --- AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql b/AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql index a94e4677..d4437009 100644 --- a/AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql +++ b/AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql @@ -2,8 +2,8 @@ -- please note that the job that runs AdaptiveIndexDefrag is expecting msdb. As such, change the database context accordingly. -- For deployment in Azure SQL Database, remove or comment the USE statement below. ---USE msdb ---GO +USE msdb +GO SET NOCOUNT ON; @@ -3337,5 +3337,3 @@ PRINT 'All done!' GO - -EXEC usp_AdaptiveIndexDefrag @debugMode = 1 \ No newline at end of file From 6e1ed2246e316a718b7e7d5071d01e56192a95bf Mon Sep 17 00:00:00 2001 From: Christopher Elliott Date: Fri, 22 Apr 2022 18:51:31 -0700 Subject: [PATCH 3/3] Remove newline --- AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql | 1 - 1 file changed, 1 deletion(-) diff --git a/AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql b/AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql index d4437009..c4637cc8 100644 --- a/AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql +++ b/AdaptiveIndexDefrag/usp_AdaptiveIndexDefrag.sql @@ -3336,4 +3336,3 @@ PRINT 'Procedure usp_AdaptiveIndexDefrag_Exceptions created (If the defrag shoul PRINT 'All done!' GO -