IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Création d'un plan de maitenance sous SQL SERVER 2005 EXPRESS


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 115
    Points : 56
    Points
    56
    Par défaut Création d'un plan de maitenance sous SQL SERVER 2005 EXPRESS
    Bonjour,

    Comme vous le savez, il n'est pas possible de passer par SQL SERVER 2005 EXPRESS pour créer un plan de maintenance. Ce process n'existe pas sur la version EXPRESS.

    Je me sers donc du code ci-dessous pour faire le backup de ma base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    DECLARE @dateString CHAR(12), @dayStr CHAR(2), @monthStr CHAR(2), @hourStr CHAR(2), @minStr CHAR(2)
    --month variable
    IF (SELECT LEN(CAST(MONTH(GETDATE()) AS CHAR(2))))=2
       SET @monthSTR=CAST(MONTH(GETDATE()) AS CHAR(2))
    ELSE
       SET @monthSTR= '0' + CAST(MONTH(GETDATE()) AS CHAR(2))
    --day variable
    IF (SELECT LEN(CAST(DAY(GETDATE()) AS CHAR(2))))=2
       SET @daySTR=CAST(DAY(GETDATE()) AS CHAR(2))
    ELSE
       SET @daySTR='0' + CAST(DAY(GETDATE()) AS CHAR(2))
    --hour variable
    IF (SELECT LEN(DATEPART(hh, GETDATE())))=2
       SET @hourStr=CAST(DATEPART(hh, GETDATE()) AS CHAR(2))
    ELSE
       SET @hourStr= '0' + CAST(DATEPART(hh, GETDATE()) AS CHAR(2))
    --minute variable
    IF (SELECT LEN(DATEPART(mi, GETDATE())))=2
       SET @minStr=CAST(DATEPART(mi, GETDATE()) AS CHAR(2))
    ELSE
       SET @minStr= '0' + CAST(DATEPART(mi, GETDATE()) AS CHAR(2))
    --name variable based on time stamp
    SET @dateString=CAST(YEAR(GETDATE()) AS CHAR(4)) + @monthStr + @dayStr + @hourStr + @minStr
    --=================================================================
    DECLARE @IDENT INT, @sql VARCHAR(1000), @DBNAME VARCHAR(200)
    SELECT @IDENT=MIN(database_id) FROM SYS.DATABASES WHERE [database_id] > 0 AND NAME NOT IN ('TEMPDB')
    WHILE @IDENT IS NOT NULL
    BEGIN
       SELECT @DBNAME = NAME FROM SYS.DATABASES WHERE database_id = @IDENT
    /*Change disk location here as required*/
       SELECT @SQL = 'BACKUP DATABASE '+@DBNAME+' TO DISK = ''E:\SQL_Backup\'+@DBNAME+'_db_' + @dateString +'.BAK'' WITH INIT'
       EXEC (@SQL)
       SELECT @IDENT=MIN(database_id) FROM SYS.DATABASES WHERE [database_id] > 0 AND database_id>@IDENT AND NAME NOT IN ('TEMPDB')
    END
    Problème : apparemment je ne fais pas un FULL backup de la base puisque j'ai 500 Mo lorsque j'exécute de script. Si je passe par SQL SERVER 2005 EXPRESS et que je fais un full backup j'ai 1Go.
    Auriez-vous une idée pour faire un FULL backup ?

    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Un peu plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    DECLARE @dateString CHAR(19)
    SELECT @dateString = REPLACE(REPLACE(CONVERT(CHAR(19), GETDATE(), 120), ' ', '_'), ':', '-')
     
    DECLARE cur CURSOR FOR
    	SELECT name
    	FROM sys.databases
    	WHERE name <> 'TempDB'
    FOR READ ONLY
     
    DECLARE @nomBD SYSNAME,
    		@SQL VARCHAR(1024)
    OPEN cur
    FETCH NEXT FROM cur INTO @nomBD
    WHILE @@FETCH_STATUS = 0
    BEGIN
    	SET @SQL = 'BACKUP DATABASE ' + @nomBD +
    				' TO DISK = ''E:\SQL_Backup\' + @nomBD + '_db_' + @dateString +'.BAK'' WITH INIT, STATS = 100'
     
    	EXEC (@SQL)
     
    	FETCH NEXT FROM cur INTO @nomBD
    END
    DEALLOCATE cur
    Avec la commande BACKUP DATABASE sans WITH DIFFERENTIAL, vous faites effectivement une sauvegarde complète de vos base de données.
    Si vous voulez faire une sauvegarde du fichier du journal des transactions, vous devez exécuter BACKUP LOG.

    Problème : apparemment je ne fais pas un FULL backup de la base puisque j'ai 500 Mo lorsque j'exécute de script. Si je passe par SQL SERVER 2005 EXPRESS et que je fais un full backup j'ai 1Go.
    Je ne comprends pas le problème que vous décrivez, soyez plus précis.

    @++

Discussions similaires

  1. [2005] Plan de maintenance sur SQL SERVER 2005 EXPRESS ?
    Par pape69 dans le forum Administration
    Réponses: 3
    Dernier message: 31/07/2013, 16h59
  2. Création de tableaux bords sous sql server 2005 ?
    Par housni dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/08/2008, 13h40
  3. création d'une table de fait sous sql server 2005
    Par kev0631 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 19/07/2007, 14h45
  4. Réponses: 6
    Dernier message: 31/05/2007, 15h54
  5. Création d'un cube sous Sql Server 2005
    Par Valentino62100 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/04/2007, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo