Sql server 2000 - compacter toutes les bases de données du serveur (faire un shrink)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 631 fois - Téléchargée 24 fois

Contenu du snippet

Dans le cadre de la préparation d'un serveur pour migrer les bases, il est très utile de compacter les bases afin de réduire le volume global des fichiers à transférer.
Voila donc un script qui vous permet d'effectuer ce travail.

Source / Exemple :


DECLARE @name sysname 
DECLARE @LaRequette varchar(8000) 
DECLARE @DateJour varchar(20) 
DECLARE @TauxEspaceLibre int

-- VALEUR A CHOISIR CONCERNANT LE TAUX D'ESPACE LIBRE VOULU
SET @TauxEspaceLibre = 10
  
SET @DateJour = REPLACE(CONVERT(VARCHAR, GetDate(), 102), '.', '_') 
PRINT '---------------------------------------------------------------------' 
PRINT '-- DATE COMPACTAGE LANCE : '+ @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 '-- COMPACTAGE EFFECTUE SUR LA BASE DE DONNEES : '+ @name 
    PRINT '---------------------------------------------------------------------' 
  
    SET @LaRequette = 'DBCC SHRINKDATABASE (['+ @name +'], '+ CONVERT(VARCHAR(10), @TauxEspaceLibre) +')'
    PRINT 'Requette : '+ @LaRequette 
    EXECUTE (@LaRequette) 
  
    PRINT '---------------------------------------------------------------------' 
  
    FETCH NEXT FROM TESTCURSEUR 
    INTO @name 
  
END 
  
CLOSE TESTCURSEUR 
DEALLOCATE TESTCURSEUR

Conclusion :


Bon coding

Romelard Fabrice [MVP]

A voir également

Ajouter un commentaire

Commentaires

cs_Hyperion
Messages postés
7
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2009
-
Merci beaucoup.

Code très intéressant et souple à adapter pour tous scipts
devant être executer sur "presque" toutes les bases. :)
FENETRES
Messages postés
205
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
14 avril 2009
-
Pour la form, corrections à effectuer :

DECLARE @@LaRequete varchar(8000); -- orthographe
DECLARE @DateJour varchar(10); --intervalle de définition
SET @DateJour = Convert(Varchar(10), GetDate(), 103); -- conversion

sinon aucune remarque sur le fond
sniperdd
Messages postés
10
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
25 novembre 2008
-
merci bcp .
tu m'a aider

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.