Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SQL SERVER - PROCÉDURE STOCKÉE METTANT À JOUR TOUTES LES STATISTIQUES DE TOUTES LES BASES DU SERVEUR


Information sur la source

Catégorie :Divers Classé sous : sqlserver, procedure, statistique, update Niveau : Expert Date de création : 18/02/2005 Date de mise à jour : 17/01/2007 18:07:55 Vu : 13 689

Note :
7,67 / 10 - par 3 personnes
7,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note


Description

Dans le cadre de taches administratives il est utile de pouvoir mettre à jour les statistiques des bases de données afin que les requettes des utilisateurs se fassent le plus rapidement possible.
L'évaluation du plan d'exécution de SQL Server est fait suivant l'intérrogation de ces statistiques. Donc si celles-ci ne sont pas correctes au départ, les plans d'exécution des requettes seront faux et celles-ci seront longues à s'exécuter.

Dans cette optique, voila une Procédure stockée qui utilise un Curseur afin de boucler sur toutes les bases du serveur et de mettre à jour chaque base en exécutant un procédure stockée système : "sp_updatestats"

Vous pouvez ensuite planifier l'exécution de cette procédure toutes les semaines voire tous les mois, via les jobs de SQL Agent.
 

Source

  • ------------------------------------------------------------------------------------------------------
  • CREATE PROCEDURE dbo.SP_System_MiseAJourStatistiquesIndexes
  • /*
  • Permet de mettre à jour toutes les statistiques des Indexes
  • de toutes les bases du serveur SQL Server
  • */
  • AS
  • DECLARE @name 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 STATISTIQUES 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')
  • OPEN TESTCURSEUR
  • FETCH NEXT FROM TESTCURSEUR
  • INTO @name
  • WHILE @@FETCH_STATUS = 0
  • BEGIN
  • PRINT ''
  • PRINT '---------------------------------------------------------------------'
  • PRINT ' STATISTIQUES MISE A JOUR SUR LA BASE DE DONNEES : '+ @name
  • PRINT '---------------------------------------------------------------------'
  • SET @LaRequette = 'USE ['+ @name +'] exec sp_updatestats'
  • PRINT 'Requette : '+ @LaRequette
  • EXECUTE (@LaRequette)
  • PRINT '---------------------------------------------------------------------'
  • FETCH NEXT FROM TESTCURSEUR
  • INTO @name
  • END
  • CLOSE TESTCURSEUR
  • DEALLOCATE TESTCURSEUR
  • GO
  • ------------------------------------------------------------------------------------------------------
  • -- Elle est utilisable avec la commande suivante : exec dbo.SP_System_MiseAJourStatistiquesIndexes
------------------------------------------------------------------------------------------------------
CREATE PROCEDURE dbo.SP_System_MiseAJourStatistiquesIndexes
/* 
	Permet de mettre à jour toutes les statistiques des Indexes 
 	de toutes les bases du serveur SQL Server 
*/

AS

DECLARE @name 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 STATISTIQUES 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')

OPEN TESTCURSEUR
FETCH NEXT FROM TESTCURSEUR
INTO @name

WHILE @@FETCH_STATUS = 0

BEGIN 
	PRINT ''
	PRINT '---------------------------------------------------------------------'
	PRINT ' STATISTIQUES MISE A JOUR SUR LA BASE DE DONNEES : '+ @name
	PRINT '---------------------------------------------------------------------'

	SET @LaRequette = 'USE ['+ @name +'] exec sp_updatestats'
	PRINT 'Requette : '+ @LaRequette
	EXECUTE (@LaRequette)

	PRINT '---------------------------------------------------------------------'

	FETCH NEXT FROM TESTCURSEUR
	INTO @name

END

CLOSE TESTCURSEUR
DEALLOCATE TESTCURSEUR
GO

------------------------------------------------------------------------------------------------------

-- Elle est utilisable avec la commande suivante : exec dbo.SP_System_MiseAJourStatistiquesIndexes

Conclusion

En espérant que cette SP vous rende service.

Bon coding

Romelard Fabrice (Alias F___)
 

Historique

17 janvier 2007 18:07:56 :
Modification de la requête

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Update [ par fdouieb ] Bonjour,J'ai une procedure stockée sur mon serveur SQL Serveur 2003 ayant un update de ce type    create table #Data    (IdRow                    int update dans SqlServer 2008 [ par titi66 ] bonjourdans un procédure stockée, je passe  des parametres, je fais des calculset je veux mettre à jour ma table Si mon enregistrement existe je fait Champ texte update sql server 2008 [ par loic2810 ] Bonjour, Je crée actuellement un site sous asp /sql server 2008 via dreamweaver 8 et lorsque je crée une page d'update mes champs texte ( valeurs par Liste des enregistrements modifiés par un update [ par titi66 ] BonjourSous SQL Server 2008 , comment récupérer la liste des enregistrements modifiés par un Update si cela est possible ?Merci Stored procedure en MySQL + VB6 [ par chanas ] Bonjour,j'essaie d'activer une procedure stockée qui fonctionne correctement en l'appelant dans l'interface MySQL par Call Get_RScapteur2(1234), par V création d'une procedure stokée [ par crapcrap ] Bonjour Je cherche le code pour créer une procédure stockée qui lit un fichier du disque et qui insère sont contenu dans une table colonne image s'il Problème de connexion SQL Server 2008 [ par drcmomo ] Bonjour tout le mondeJe viens d'installer SQLServer 2008 , j'essais de me connecter a ma base de données. Quand je lance mon application j'obtiens l'e procedure stocker et triggers [ par adilcoure ] salut a tous moi adil j ai besoin d'un ensemble d exercices corrigés procedure stocker et triggers Javascript:Insert_Emoticon('/imgs2/smile.gif'); procedure stocké ----------> Ado.net :(:(:( [ par dodofolie ] Salut tt le monde Bein j'espére que vous pourriez m'aidezz !!j'ai une procedure stocké en sql  qui somme un  montant  la procedure est comme suit :cre


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.