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]
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.