Sql server 2000 - vider et compacter toutes les bases de données du serveur

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 446 fois - Téléchargée 17 fois

Contenu du snippet

Il s'agit d'une variante de la source :
- http://www.sqlfr.com/codes/SQL-SERVER-2000-COMPACTER-TOUTES-BASES-DONNEES-SERVEUR_40625.aspx

Avec ce script, vous faites un vidage des logs de transaction avant de lancer le compactage des bases de données.

Je vous invite a lire l'article sur ce sujet :
- http://sql.developpez.com/sqlserver/log/

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 '-- VIDAGE DES LOGS LA BASE DE DONNEES : '+ @name 
    PRINT '---------------------------------------------------------------------' 
    SET @LaRequette = 'BACKUP LOG  ['+ @name +'] WITH TRUNCATE_ONLY'
    PRINT 'Requette : '+ @LaRequette 
    EXECUTE (@LaRequette) 
  
    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

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.