Régénération des index de base de données

La régénération des index de base de données et la mise à jour des statistiques sont obligatoires pour permettre un fonctionnement de BigFix Inventory harmonieux. Si vous rencontrez un retard dans la réponse de l'interface utilisateur ou que vous importez des données, assurez-vous que la défragmentation de votre disque dur est effectuée et que les statistiques sont à jour.

A partir de la version 10.0.4, pour les nouvelles installations et mises à niveau, un travail est inclus dans la base de données MS SQL intitulée "<InventoryDB> Réorganisation complète de l'index de base de données". Ce travail effectue la maintenance d'index requise.

Le travail suit les critères suivants :

  • Le script s'exécute tous les jours à 4h, heure locale.
  • Si une importation de données est en cours d'exécution (importation planifiée ou importation manuelle), le travail attend la fin de l'importation, puis essaie de régénérer l'index. Le travail tente de s'exécuter 16 fois après des intervalles de 30 minutes. Le temps d'attente total est de 8 heures. Si l'importation ne se termine pas dans 8 heures, le travail quitte la file d'attente avec un message d'erreur dans le journal de statut. Dans ce cas, l'index est régénéré le lendemain à l'heure planifiée.
  • Si un travail de régénération d'index existe déjà sous le nom "<InventoryDB> Réorganisation complète de l'index de base de données", les scripts n'écrasent pas les données et la configuration existante est conservée.
  • Pour que le travail de régénération d'index BigFix Inventory s'exécute, SQL Server Agent doit être configuré et en cours d'exécution. L'agent est désactivé dans certains cas. Vous devez l'activer manuellement. Pour en savoir plus sur la configuration et le démarrage de SQL Server Agent, voir Configurer SQL Server Agent et Démarrer, arrêter ou mettre en pause le service SQL Server Agent respectivement.

  • Il est recommandé de configurer SQL Server Agent pour qu'il redémarre automatiquement en cas d'échec. Pour plus d'informations, voir Auto Restart SQL Server Agent.

Pour les versions inférieures à 10.0.4, exécutez l'opération une fois par semaine pour régénérer la base de données.

L'exemple suivant illustre l'approche simple de la régénération des index et de la mise à jour des statistiques. Le travail régénère tous les index indépendamment de leur fragmentation. Le script utilise le nom de base de données standard, comme TEMADB.

      USE TEMADB
      GO
      IF EXISTS (SELECT
      *
      FROM dbo.imports
      WHERE success IS NULL)
      BEGIN
      PRINT N'CANNOT RUN index rebuild. BFI import is running!'
      PRINT N'Wait until BFI import finishes'
      END
      ELSE
      BEGIN
      DECLARE table_cursor CURSOR FOR
      SELECT
      table_schema,
      table_name
      FROM INFORMATION_SCHEMA.TABLES
      WHERE table_type = 'BASE TABLE'
      OPEN table_cursor
      DECLARE @tableName sysname
      DECLARE @tableSchema sysname
      FETCH NEXT FROM table_cursor INTO @tableSchema, @tableName
      WHILE @@fetch_status != -1
      BEGIN
      PRINT N'START alter index all on ' + @tableSchema
      + N'.' + @tableName + N' rebuild';
      EXECUTE (N'alter index all on ' + @tableSchema + N'.'
      + @tableName
      +
      N' rebuild')
      PRINT N'END alter index all on ' + @tableSchema
      + N'.' + @tableName + N' rebuild';
      FETCH NEXT FROM table_cursor INTO @tableSchema,
      @tableName
      END
      CLOSE table_cursor
      DEALLOCATE table_cursor
      PRINT N'START sp_updatestats';
      EXECUTE sp_updatestats
      PRINT N'END sp_updatestats';
      END
      GO