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 :

Perte de données


Sujet :

Administration SQL Server

  1. #21
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    C'est surtout que ça pourrait expliquer la situation : les données que vous voyiez entre 8h et 11h n'étaient pas validées, et ont été annulée. ça expliquerait aussi les timeout : les données non validées maintenant les verrous, cela pouvait bloquer d'autres requêtes.

  2. #22
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Oui, j'avais compris.
    Je ne m'attendais néanmoins pas à perdre toutes ces données

    Merci

  3. #23
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    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 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Je suppose que la plupart de vos requêtes utilisent imbécilement le tag "WITH (NOLOCK)" !

    ha pétard, j'avais pas vu les remarques de mes collègues... J'avais ouvert la page il y a plusieurs heures...

    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/ * * * * *

  4. #24
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    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 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    L’utilisation du NOLOCK (comme du READ UNCOMMITTED ce qui revient au même) et une aberration en production.
    Ceux qui prônent cela sont des imbéciles qui n'ont rien compris aux SGBDR et ne savent pas du tout quel sont les conséquence que cela entraine.
    En effet NOLOCK ne veut pas dire "je ne verrouille pas les données". NOLOCK signifie, lit moi les données, même s'il y a des verrous. Un SGBDR verrouille toujours même en lecture d'une manière ou d'une autre.
    L'utilisation du NOLOCK à 3 conséquences :
    1. lire potentiellement plusieurs fois les mêmes informations (ainsi dans un dataset, la même ligne peut revenir plusieurs fois alors même que vous avez une clef primaire !!!)
    2. oublier de lire certaines lignes
    3. présenter des données qui ne sont pas validées par la transaction et peuvent disparaître en cas de ROLLBACK.


    Faire porter un traitement quelconque de données dans ce genre de cas ne peut que conduire à rendre la base de données totalement incohérente, même si vous faites des transactions partout.

    Le NOLOCK ne devrait être utilisé que dans certaines cas très particuliers :
    • échantillon quelconque de données d'une table
    • statistiques grossières sur un volume important de données
    • tests divers


    Dans tous les autres cas cela peut être catastrophique et celui qui a mis en place cela devrait être lourdé immédiatement !

    En général ceux qui préconisent cela, ont rencontré des problèmes de verrouillage et au lieu d'analyser le problème et de le rectifier se sont dit que c'est la faute à SQL Server et que cela irait mieux avec le NOLOCK.

    Il existe beaucoup de solution pour minimiser les verrous à commencer par, et dans l'ordre :
    • faire un modèle de données normalisé (cela conduit à un grand nombre de table ayant un petit nombre de colonne). À lire : https://blog.developpez.com/sqlpro/p...mances_petites
    • mettre en place les index adéquat et retirer les index inutiles
    • faire des transactions les plus fines possibles
    • utiliser un verrouillage optimiste (niveau d'isolation SNAPSHOT) au lieu du verrouillage pessismiste par défaut de SQL Server
    • ...



    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/ * * * * *

Discussions similaires

  1. [MFC] CSocket | perte de données
    Par Grey dans le forum MFC
    Réponses: 2
    Dernier message: 24/11/2005, 10h14
  2. Perte de donnée
    Par spikto dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2005, 16h03
  3. Perte de données Firebird
    Par jeanafond dans le forum Débuter
    Réponses: 8
    Dernier message: 19/05/2005, 10h21
  4. Crash InnoDB,perte de données définitives... Info ou Intox ?
    Par Alexandre T dans le forum Administration
    Réponses: 3
    Dernier message: 17/01/2005, 10h44
  5. [JTable] Perte des données
    Par david71 dans le forum Composants
    Réponses: 8
    Dernier message: 09/01/2005, 00h37

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