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

MS SQL Server Discussion :

Annuler une mise à jour [FAQ]


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Par défaut Annuler une mise à jour
    Bonjour tout le monde!

    je suis nouveau sur SQL SERVER... et etant novice j'ai fait une connerie:
    j'ai fait une mise à jours dans une table (+400.000 records) via un package DTS. j'ai utilisé un curseur pour pouvoir mettre à jours juste une partie des enregistrements, mais il parait que la mis à jour à affecté toute ma table (certainement à cause d'une erreur dans la requete de MAJ), du coup des données ont été modifié, et je n'ai pas fait de bkp avant... je n'ai pas prevu de rollback dans ma requete!

    ma question est: est il possible de recuperer l'etat de ma base de donnée avant l'execution de cette mis à jour ?? si oui comment le faire.

    j'attends votre aide, car autrement je suis dans un gros kaka

    Merci beaucoup!!

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Si vous n'avez pas la moindre sauvegarde complète et si vous n'êtes pas dans un mode de recouvrement de type FULL c'est impossible.

    Si vous avez fait une sauvegarde complète et êtes dans le mode de recouvrement de type FULL, c'est possible.
    Pour cela il vous faut :
    1) notez l'heure de survenance de l'incident
    2) placez la base en mode utilisateur unique (ALTER DATABASE ... SET SINGLE USER WITH ROLLBACK IMMEDIATE)
    3) sauvegarder le journal des trannsactions
    4) restaurer la complète en mode NORECOVERY
    5) restaurer le JT en mode RECOVERY avec un STOPAT calculé sur l'heure de survenance de l'incident moins 1 minutes.

    La seul chose que vous pouvez faire si la ma noeuvre ci dessus est impossible, c'est d'utiliser un outil comme log explorer de Lumigent ou encore celui de Redgate Software pour "voir" le journal de transaction. Mais pour des raisons de paradoxe temporel il est strictement impossible d'annuler un transaction finalisée.

    Ce sont des choses qu'il faut prévoir AVANT !
    N'oubliez jamais que les données sont un patrimoine important de l'entreprise... Dans le service informatique, les données sont le capital LE PLUS IMPORTANT... ce que les informaticiens ont tendance à oublier !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Par défaut
    Merci de votre aide SQLpro,

    c'est vrai que j'ai toujours fait confiance à mes requetes, et je m'attendais pas à cette catastrophe... mais ça devait m'arriver une fois pour que je change ma façon de travailler, et voila...
    il y a toujoursn moyen que je corrige mes données, sauf que c'est une manipulation qui va me prendre une journée...
    là j'aimerais bien comprendre la methode que vous m'avez expliqué, mais il y a des choses qui m'echappent encore:
    -comment savoir si je suis en mode recouvrement de type FULL (sinon, comment le changer dans l'avenir)
    -quand vous dites "placez la base en mode utilisateur unique" ... suffit il d'executer la requete sql quelque part ??
    - comment sauvegarder le journal des trannsactions (je trouve pas mon journal de transaction deja)
    -comment restaurer la DB (je suppose) complète en mode NORECOVERY
    -et puis je vois pas ce que c'est que le JT qu'il faut restaurer...


    enfin si vous remarquez, je dois demander sur toute les etapes de ce que vous m'avez proposé de faire car ça fait pas tres longtemps que je bosse sur sql server, et sur les bases de données en general!

    voila, merci encore pour votre aide!


    PS: je travaille avec MS SQL 2000 avec le SQL Enterprise Manager Version 8.8

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Ces questions indiquent que vous n'avez visiblement pas une formation suffisante pour faire fonctionner un serveur SGBDR aussi puissant que SQL Server.

    Pour la petit histoire sachez que le cursus complet de cours pour SQL Server est d'une vingtaine de jours... Donc 5 en administration "basique" (sans la réplication ni le clustering) !
    C'est à peu près 3 fois plus que pour apréhender Windows server...

    Combien de jours de formation avec vous fait avec SQL Server ???

    ;-)

    -comment savoir si je suis en mode recouvrement de type FULL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATABASEPROPERTYEX(DB_NAME(), 'Recovery')
    sinon, comment le changer dans l'avenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER DATABASE ... SET RECOVERY FULL
    quand vous dites "placez la base en mode utilisateur unique" ... suffit il d'executer la requete sql quelque part ??
    oui
    comment sauvegarder le journal des trannsactions (je trouve pas mon journal de transaction deja)
    Vous n'avez pas bersoin de savoir ou il est. Vous avez besoin de lancer la commande :
    comment restaurer la DB (je suppose) complète en mode NORECOVERY
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RESTORE DATABASE ... FROM ... WITH (NORECOVERY)
    et puis je vois pas ce que c'est que le JT qu'il faut restaurer...
    Le Journal des Transaction que vous avez préalablement sauvegardé...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RESTORE LOG ... FROM ... WITH (RECOVERY, STOPAT '...')
    L'administration de bases de données ne s'improvise pas !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Par défaut
    Merci d'abord pour vos explications;

    c'est vrai que mes connaissances en SGBDR sont limitées et s'arretent à la conception, et la manipulation des données... et mon profil est plutot d'un developpeur d'application que d'un DB Admin... mais là, je me trouve dans une situation où je dois utiliser SQL Server, car je dois gerer une db qui n'arrete pas de prendre de volume, et ça devient tres lent avec un DBMS moin performant (access ou mysql par ex)...
    donc je n'ai jamais eu l'occasion de suivre un cours, ou une formation sur SQL server, tout ce que je sais faire pour le moment, je l'ai acquis par de la simple curiosité... j'aimerai bien lsuivre une formation mais la situation actuelle ne me permet pas...

    je ne sais pas si j'arriverai à gerer ça sans avoir suivi une formation specifique... en tout cas, quand j'ai l'occasion je fais toujours des recherches pour ameliorer mes connaissances...

    Maintenant je vais essayer d'appliquer ce que vous m'avez conseillé de faire!!

    Merci encore!

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Par défaut
    ma base de donnée était en mode recovery SIMPLE;
    donc je dois oublier les espoirs d'aller en arriere pour retrouver les anciennes valeurs de ma table.

    je vais devoir fouiner dans les archives pour remettre à jours ma table

Discussions similaires

  1. Annuler une mise à jour
    Par Rymaya dans le forum SQL
    Réponses: 13
    Dernier message: 06/06/2012, 13h50
  2. Annulation d'une mise à jour d'une table
    Par souarit dans le forum Bases de données
    Réponses: 6
    Dernier message: 07/07/2008, 03h18
  3. Annuler une mise à jour
    Par langevert dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/08/2007, 19h29
  4. Problème d'une mise à jour
    Par Hamdi dans le forum Access
    Réponses: 2
    Dernier message: 17/09/2005, 13h57

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