patternMinor
Maintenance plan using external tool to execute query and stored procedures giving off no results
Viewed 0 times
storedproceduresqueryplanmaintenanceusingresultsandexternalexecute
Problem
My situation is as follows:
I am using a third party tool (VisualCron) to run stored procedures and sql queries on several database servers.
The stored procedures are from http://ola.hallengren.com/ and the sql queries are as follows:
Sql query to check index fragmentation.
```
IF EXISTS ( SELECT *
FROM [tempdb].[dbo].[sysobjects]
WHERE id = OBJECT_ID(N'[tempdb].[dbo].[tmp_indexfragmentation_details]'))
DROP TABLE [tempdb].[dbo].[tmp_indexfragmentation_details]
CREATE TABLE [tempdb].[dbo].tmp_indexfragmentation_details NULL,
[ObjectName] [nvarchar] (1000) NULL,
[Pagecount] INT,
[indexName] [nvarchar] (1000) NULL,
[avg_fragmentation_percent] float NULL,
) ON [PRIMARY]
DECLARE @dbname varchar(1000)
DECLARE @sqlQuery nvarchar(4000)
DECLARE dbcursor CURSOR for
SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')and state not in('6')
OPEN dbcursor
FETCH NEXT FROM dbcursor INTO @dbname
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sqlQuery = '
USE [' + @dbname + '];
IF EXISTS
(
SELECT compatibility_level
FROM sys.databases
WHERE
name = N'''+ @dbname +'''
AND compatibility_level >= 90
)
BEGIN
INSERT INTO [tempdb].[dbo].[tmp_indexfragmentation_details]
(
DatabaseName
, ObjectName
, IndexName
, avg_fragmentation_percent
, PageCount
)
SELECT db_name() as DatabaseName,
dbtables.[name],
dbindexes.[name],
indexstats.avg_fragmentation_in_percent,
indexstats.page_count
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.inde
I am using a third party tool (VisualCron) to run stored procedures and sql queries on several database servers.
The stored procedures are from http://ola.hallengren.com/ and the sql queries are as follows:
Sql query to check index fragmentation.
```
IF EXISTS ( SELECT *
FROM [tempdb].[dbo].[sysobjects]
WHERE id = OBJECT_ID(N'[tempdb].[dbo].[tmp_indexfragmentation_details]'))
DROP TABLE [tempdb].[dbo].[tmp_indexfragmentation_details]
CREATE TABLE [tempdb].[dbo].tmp_indexfragmentation_details NULL,
[ObjectName] [nvarchar] (1000) NULL,
[Pagecount] INT,
[indexName] [nvarchar] (1000) NULL,
[avg_fragmentation_percent] float NULL,
) ON [PRIMARY]
DECLARE @dbname varchar(1000)
DECLARE @sqlQuery nvarchar(4000)
DECLARE dbcursor CURSOR for
SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')and state not in('6')
OPEN dbcursor
FETCH NEXT FROM dbcursor INTO @dbname
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sqlQuery = '
USE [' + @dbname + '];
IF EXISTS
(
SELECT compatibility_level
FROM sys.databases
WHERE
name = N'''+ @dbname +'''
AND compatibility_level >= 90
)
BEGIN
INSERT INTO [tempdb].[dbo].[tmp_indexfragmentation_details]
(
DatabaseName
, ObjectName
, IndexName
, avg_fragmentation_percent
, PageCount
)
SELECT db_name() as DatabaseName,
dbtables.[name],
dbindexes.[name],
indexstats.avg_fragmentation_in_percent,
indexstats.page_count
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.inde
Solution
By default IndexOptimize is skipping indexes with less than 1000 pages. You can read more about this in the Frequently Asked Questions. Could this explain it?
Context
StackExchange Database Administrators Q#64534, answer score: 3
Revisions (0)
No revisions yet.