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