begin process at 2008 07 04 09:56:10
1 204 528 membres
70 nouveaux aujourd'hui
14 116 membres club

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 2000 - COMPACTER TOUTES LES BASES DE DONNÉES DU SERVEUR (FAIRE UN SHRINK)


Information sur la source

Catégorie :Migration Classé sous : compacter, shrink, database, sqlserver Niveau : Expert Date de création : 07/12/2006 Date de mise à jour : 17/01/2007 17:52:06 Vu : 4 093

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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


Description

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

  • 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
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]
17 janvier 2007 17:52:06 :
Modification de la requête créée
  • signaler à un administrateur
    Commentaire de Hyperion le 11/12/2006 09:14:57

    Merci beaucoup.

    Code très intéressant et souple à adapter pour tous scipts
    devant être executer sur "presque" toutes les bases. :)

  • signaler à un administrateur
    Commentaire de FENETRES le 04/12/2007 11:16:03

    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

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS