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

Administration SQL Server Discussion :

erreur 9002 pendant backup


Sujet :

Administration SQL Server

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut erreur 9002 pendant backup
    Bonjour a tous,

    (SQL serveur 2005)

    Lorsque j'execute cette commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BACKUP DATABASE [maBase] TO DISK = 'S:\naBase.bak' WITH NOFORMAT, INIT, SKIP, NOREWIND, NOUNLOAD
    J'obtient cette erreur: (c'est traduit de l'espagnol avec google traductor)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Impossible de supprimer le "différentiel de base de données" du bitmap maBase
     avec l'erreur 9002. En conséquence, le bitmap différentielle ou journalisé en bloc
     surestime l'ampleur du changement qui se produira
     la sauvegarde différentielle suivante ou d'inscription.
     Cette différence peut ralentir les opérations de secours après avoir
     différentielle ou d'inscription et avoir les jeux de sauvegarde sont plus grandes que nécessaire.
    La cause habituelle de cette erreur est le manque de ressources.
    Enquêter sur l'erreur et résoudre la cause.
    Si l'erreur s'est produite dans une sauvegarde des données
    envisager d'utiliser une sauvegarde de données pour créer
    une nouvelle base pour une sauvegarde différentielle supplémentaires
    Je ne sais pas quoi faire.

    J'ai lancé cette requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT name, physical_name, size/128, case max_size when '-1' then max_size else max_size/128 end FROM ePO4_ATC-ANTIVIRUS.sys.database_files
    mais j'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sintaxis incorrecta cerca de '-'.
    D'avance merci si quelqu'un sait comment resoudre ce probleme.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Par défaut
    Merci de poster le résultat d'un dbcc sqlperf(logspace) + le contenu de l'errorlog (si trop gros mettre en PJ) merci,

    max_size est un int, essayer sans simple quotes.

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    name                     log size    log space used
    ePO4_ATC-ANTIVIRUS	175,9922	100,0044
    je dois creer un autre fichier de log?
    ou agrandir le current?

    le contenu de l'errorlog, je sais pas ou le trouver.
    D'avance merci

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Par défaut
    Pour l'errorlog:

    il faudrait aussi le retour de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select databasepropertyex('ePO4_ATC-ANTIVIRUS','recovery')
    Et pour ta requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT name, physical_name, size/128, case max_size when '-1' then max_size else max_size/128 end FROM [ePO4_ATC-ANTIVIRUS].[sys].(database_files]
    Est-ce que tu fais des backups réguliers sur cette base ?

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut

    alors j'ai realiser ça pour filtrer car la commande a sec ça affiche le log depuis 2010:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Declare @CurrentDate datetime
    Declare @DatelessHour datetime
    Set @CurrentDate = getdate()
    Set @DatelessHour = DATEADD(hh,-1,@CurrentDate)
    EXEC xp_ReadErrorLog 0, 1, NULL, NULL, @DatelessHour, @CurrentDate
    Resultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2011-07-05 16:44:49.180	spid64	The transaction log for database 'ePO4_ATC-ANTIVIRUS' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
    si l'on regarde la requete qu'ils proposent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select name,log_reuse_wait_desc from sys.DATABASES
    ça donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ePO4_ATC-ANTIVIRUS	LOG_BACKUP
    Le resultat de cette query:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT databasepropertyex('ePO4_ATC-ANTIVIRUS','recovery')
    FULL

    et la derniere requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ePO4_ATC-ANTIVIRUS	F:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\ePO4_ATC-ANTIVIRUS.mdf	15109	-1
    ePO4_ATC-ANTIVIRUS_log	F:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\ePO4_ATC-ANTIVIRUS_log.LDF	176	2097152
    Donc clairement c'est le fichier de log qui est plein, il faut l'agrandir?
    Ou c'est mieux d'en creer un autre?

    D'avance merci

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Par défaut
    Et le disque F:\ n'est pas plein ? Je ne pense pas que le journal soit à l'origine du problème, 175 Mb ce n'est pas ça qui va bloquer. Il peut y avoir un autre fichier sur le F:\ qui a grossi et qui empêche le journal de ta base de grossir. Tu peux essayer ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DOS>forfiles /S /P "F:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\" /C "cmd /c echo @file @fsize"

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Si le disque F:\ est plein...
    Alors ok c'est ça l'erreur.

    Je peux le bouger a S: en utilisant la solution de la derniere fois (sur ce meme forum)
    base offline et ensuite rename en donnant le nouveau lecteur...

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Par défaut
    1) alter database modify file d'abord
    2) alter database set offline
    3) déplacement des fichiers
    4) alter database set online

    Il ne faut pas de connexion sur la base au moment du alter database set offline ou alors utiliser with rollback immediate.

  9. #9
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    ok
    comme la derniere fois... Demain j'essaie et j'informerais sur le forum.
    Merci encore !

  10. #10
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Bonjour a tous
    voici les nouvelles en reference a ce probleme de log.

    Etant donné que le volume F:\ etait plein, on ne pouvait meme pas mettre la base OFFLINE. Vue que le serveur est une machine virtuelle, nous avons arreter la machine ajouté de l'espace disque, et la clairement tout marche...On a pu faire un backup etc.
    Ce que j'ai vu c'est que la taille du fichier LDF est passée de 180M a 220M.
    Donc le probleme reste entier vue que petit a petit ce fichier va remplir de nouveau ce volume.
    D'ou ma question: Peut on gerer la taille de ce fichier LDF? existe t'il une commande pour lui donner une taille max?
    Ou faut il l'eliminer et laisser un nouveau se creer?

    D'avance merci pour vos precieux conseils.

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Par défaut
    Le journal de transactions est un fichier circulaire. Il réutilise l'espace à l'intérieur de lui-même, donc il faut recycler cet espace régulièrement.

    Deux façons d'y arriver, qui dépende essentiellement de la stratégie de backup et d'une option de base : le mode de récupération (select databasepropertyex('ePO4_ATC-ANTIVIRUS','recovery') )

    Si ce mode est à FULL, toutes les transactions restent toujours dans le journal, la seule façon de la recycler est de les sauvegarder. Avantage: faire des backups de journaux permet de pouvoir restaurer à tout point dans le temps. Inconvénient: il faut faire des backups de journaux, et il faut de la place sur disque pour les stocker.

    Si ce mode est à SIMPLE, le recyclage est effectué automatiquement à intervalles réguliers, et les transactions validées sont supprimées du fichier LDF. Avantage: la gestion se fait toute seule. Inconvénient: comme les transactions sont supprimées, on ne peut plus les sauvegarder, donc on ne peut pas restaurer à un point dans le temps.

    Donc la question essentielle à se poser c'est: est-ce que tu as besoin de revenir à un point dans le temps en cas de problème sur ta base ?
    - Oui: alors il faut laisser le mode sur FULL et programmer des backups de transactions.
    - Non: alors il faut passer la base en mode SIMPLE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER DATABASE [ePO4_ATC-ANTIVIRUS] SET RECOVERY SIMPLE
    GO
    cf:
    - http://blog.capdata.fr/index.php/mod...ons-episode-1/
    - http://blog.capdata.fr/index.php/mod...ons-episode-2/

  12. #12
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut,
    ok la base en en FULL, je l'ai passé a SIMPLE.
    Demain je jetterais un coup d'oeil pour voir sa taille, normalement le fichier ne devrait plus grandir.

    Merci pour toutes ces explications. Passez une bonne semaine et surtout un bon week end.

    Ciao

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les erreurs Oracle pendant les insert/update/delete
    Par robinson50 dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 05/03/2009, 12h44
  2. [SQL Server 2005] Erreur lors du backup de log
    Par nox75 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 17/02/2009, 15h45
  3. Erreur 1004 pendant le 20° Sheets.Add Before
    Par jldancet dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/04/2008, 09h45
  4. verrouillage pendant backup journalier avec mysqldump
    Par marcha dans le forum Administration
    Réponses: 4
    Dernier message: 11/08/2006, 15h12

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