Accueil > > > SQL SERVER - PROCÉDURE STOCKÉE PERMETTANT DE DEFRAGMENTER TOUS LES INDEXES DE TOUTES LES BASES DU SERVEUR
SQL SERVER - PROCÉDURE STOCKÉE PERMETTANT DE DEFRAGMENTER TOUS LES INDEXES DE TOUTES LES BASES DU SERVEUR
Information sur la source
Description
Comme la source précédente : - http://sqlfr.com/code.aspx?ID=35836 Il y a des cas (system 24*7 par exemple), où la reconstruction des indexes est impossible. En effet, cette reconstruction commence par la suppression des indexes existant. Ainsi, cela peut pénaliser créellement les utilisateurs à ce moment. Il est donc plus simple de faire une défragmentation des Indexes existant. Voila donc la Procédure stockée faisant cela.
Source
- SET QUOTED_IDENTIFIER ON
- GO
- SET ANSI_NULLS ON
- GO
-
-
- ALTER PROCEDURE dbo.SP_System_DefragdAllIndexes
- /*
- Permet de défragmentation des Indexes
- de toutes les bases du serveur SQL Server
- */
-
- AS
-
- DECLARE @name sysname
- DECLARE @Objectname sysname
- DECLARE @Username sysname
- DECLARE @IndexName sysname
- DECLARE @LaRequette varchar(8000)
- DECLARE @DateJour varchar(20)
-
- SET @DateJour = REPLACE(CONVERT(VARCHAR, GetDate(), 102), '.', '_')
- PRINT '---------------------------------------------------------------------'
- PRINT ' DATE DE LA MISE A JOUR DES INDEXES LANCEE : '+ @DateJour
- PRINT '---------------------------------------------------------------------'
-
- DECLARE TESTCURSEUR CURSOR
- FOR SELECT Master.dbo.sysdatabases.name FROM Master.dbo.sysdatabases
- WHERE Master.dbo.sysdatabases.name NOT IN ('tempdb', 'model', 'pubs', 'master', 'msdb', 'LVM')
- ORDER BY Master.dbo.sysdatabases.name
-
- OPEN TESTCURSEUR
- FETCH NEXT FROM TESTCURSEUR
- INTO @name
-
- WHILE @@FETCH_STATUS = 0
-
- BEGIN
- PRINT ''
- PRINT '---------------------------------------------------------------------'
- PRINT ' DEFRAGMENTATION DES INDEXES DE LA BASE : '+ @name
- PRINT '---------------------------------------------------------------------'
-
- SET @LaRequette = 'SELECT USR.name AS UserName, O.name AS Objectname, IDX.name IndexName
- FROM '+ @name +'.dbo.sysobjects O INNER JOIN '+ @name +'.dbo.sysusers USR
- ON O.uid = USR.uid INNER JOIN '+ @name +'.dbo.sysindexes IDX
- ON O.id = IDX.id WHERE (O.xtype= ''U'' OR O.xtype= ''V'')
- AND NOT (IDX.keys IS NULL) AND NOT (IDX.status & 64 = 64);'
-
- PRINT 'Changement de base : '+ @LaRequette
- PRINT '---------------------------------------------------------------------'
-
- EXEC('DECLARE TESTCURSEURTABLE CURSOR FOR '+ @LaRequette)
- OPEN TESTCURSEURTABLE
- FETCH NEXT FROM TESTCURSEURTABLE
- INTO @Username, @Objectname, @IndexName
-
- WHILE @@FETCH_STATUS = 0
- BEGIN
- SET @LaRequette = 'DBCC INDEXDEFRAG ('''+ @name +''', '''+ @Username+'.'+ @Objectname +''', '''+ @IndexName +''')'
- PRINT 'Requette : '+ @LaRequette
- EXECUTE (@LaRequette)
- PRINT '---------------------------------------------------------------------'
- FETCH NEXT FROM TESTCURSEURTABLE
- INTO @Username, @Objectname, @IndexName
- END
-
- CLOSE TESTCURSEURTABLE
- DEALLOCATE TESTCURSEURTABLE
-
- SET @LaRequette = 'USE '+ @name +' exec sp_updatestats'
- PRINT 'Requette : '+ @LaRequette
- EXECUTE (@LaRequette)
-
- FETCH NEXT FROM TESTCURSEUR
- INTO @name
- END
-
- PRINT '---------------------------------------------------------------------'
- PRINT ' FIN DE LA DEFRAGMENTATION
- PRINT '---------------------------------------------------------------------'
-
- CLOSE TESTCURSEUR
- DEALLOCATE TESTCURSEUR
-
-
- GO
- SET QUOTED_IDENTIFIER OFF
- GO
- SET ANSI_NULLS ON
- GO
-
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER PROCEDURE dbo.SP_System_DefragdAllIndexes
/*
Permet de défragmentation des Indexes
de toutes les bases du serveur SQL Server
*/
AS
DECLARE @name sysname
DECLARE @Objectname sysname
DECLARE @Username sysname
DECLARE @IndexName sysname
DECLARE @LaRequette varchar(8000)
DECLARE @DateJour varchar(20)
SET @DateJour = REPLACE(CONVERT(VARCHAR, GetDate(), 102), '.', '_')
PRINT '---------------------------------------------------------------------'
PRINT ' DATE DE LA MISE A JOUR DES INDEXES LANCEE : '+ @DateJour
PRINT '---------------------------------------------------------------------'
DECLARE TESTCURSEUR CURSOR
FOR SELECT Master.dbo.sysdatabases.name FROM Master.dbo.sysdatabases
WHERE Master.dbo.sysdatabases.name NOT IN ('tempdb', 'model', 'pubs', 'master', 'msdb', 'LVM')
ORDER BY Master.dbo.sysdatabases.name
OPEN TESTCURSEUR
FETCH NEXT FROM TESTCURSEUR
INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT ''
PRINT '---------------------------------------------------------------------'
PRINT ' DEFRAGMENTATION DES INDEXES DE LA BASE : '+ @name
PRINT '---------------------------------------------------------------------'
SET @LaRequette = 'SELECT USR.name AS UserName, O.name AS Objectname, IDX.name IndexName
FROM '+ @name +'.dbo.sysobjects O INNER JOIN '+ @name +'.dbo.sysusers USR
ON O.uid = USR.uid INNER JOIN '+ @name +'.dbo.sysindexes IDX
ON O.id = IDX.id WHERE (O.xtype= ''U'' OR O.xtype= ''V'')
AND NOT (IDX.keys IS NULL) AND NOT (IDX.status & 64 = 64);'
PRINT 'Changement de base : '+ @LaRequette
PRINT '---------------------------------------------------------------------'
EXEC('DECLARE TESTCURSEURTABLE CURSOR FOR '+ @LaRequette)
OPEN TESTCURSEURTABLE
FETCH NEXT FROM TESTCURSEURTABLE
INTO @Username, @Objectname, @IndexName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @LaRequette = 'DBCC INDEXDEFRAG ('''+ @name +''', '''+ @Username+'.'+ @Objectname +''', '''+ @IndexName +''')'
PRINT 'Requette : '+ @LaRequette
EXECUTE (@LaRequette)
PRINT '---------------------------------------------------------------------'
FETCH NEXT FROM TESTCURSEURTABLE
INTO @Username, @Objectname, @IndexName
END
CLOSE TESTCURSEURTABLE
DEALLOCATE TESTCURSEURTABLE
SET @LaRequette = 'USE '+ @name +' exec sp_updatestats'
PRINT 'Requette : '+ @LaRequette
EXECUTE (@LaRequette)
FETCH NEXT FROM TESTCURSEUR
INTO @name
END
PRINT '---------------------------------------------------------------------'
PRINT ' FIN DE LA DEFRAGMENTATION
PRINT '---------------------------------------------------------------------'
CLOSE TESTCURSEUR
DEALLOCATE TESTCURSEUR
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Conclusion
En espérant que cette SP vous rende service.
Bon coding
Romelard Fabrice (Alias F___)
Historique
- 20 mars 2006 20:27:57 :
- Mise a jour en ajoutant un filtre sur les indexes de statistiques.
Ajout de la mise a jour des stats en fin d'exécution.
Remerciement à Frédéric BROUARD pour cette aide.
- 19 avril 2006 00:02:04 :
- Correction du titre
- 03 août 2007 10:58:05 :
- Mise à jour pour gestion des objets avec user spécifique
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|