Nous utilisons le script IndexOptimize de OLA Hallengren pour l'index de reconstruction de SQL Server 2008 et 2012. Ces scripts de maintenance sont très bons et ont travaillé pour nos DBS pendant des mois maintenant. Cependant, très récemment, j'ai remarqué que cela a changé la facturation à 90 après avoir exécuté l'index de reconstruction sur la base de données, même lorsque le paramètre Fillactor était NULL
.
Avant d'exécuter le script, j'ai vérifié sys.indexes
avait obtenu Frottant de 0 pour tous les index mais je ne sais pas pourquoi le script a changé de remplissage à 90 après le remplissage. Cela a causé beaucoup de problèmes sur la base de données.
Savez-vous si c'est le comportement prévu dans le script IndexOptimize où le remplisseur est-il changé à 90?
Voici ce que j'ai exécuté:
EXECUTE dbo.IndexOptimize
@Databases = 'dbname',
@FragmentationLow = NULL,
@FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationLevel1 = 5,
@FragmentationLevel2 = 30,
@LogToTable = 'Y'
Le script de OLA ne changera que le facteur de remplissage si vous attribuez une valeur à la @FillFactor
variable.
IF @FillFactor IS NOT NULL AND @CurrentIsPartition = 0 AND @CurrentIndexType IN(1,2,3,4) SET @CurrentCommand13 = @CurrentCommand13 + ', FILLFACTOR = ' + CAST(@FillFactor AS nvarchar)
Ce qui signifie quelqu'un:
Vous pouvez scripter la procédure stockée pour voir si une personne a changé la valeur par défaut,
Ou vous pouvez interroger le dbo.CommandLog
Tableau pour voir si une commande REBUILD
_ a été exécutée avec un facteur de remplissage de 90.
SELECT *
FROM dbo.CommandLog AS cl
WHERE cl.CommandType = 'ALTER_INDEX'
AND cl.Command LIKE '%FILLFACTOR%'
Si quelqu'un l'a changé en utilisant un script différent ou l'interface graphique, qui serait beaucoup plus difficile à suivre.