1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Datensätze gelockt obwohl nichts gemacht wird

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von so-photo, 2 Juli 2019.

  1. so-photo

    so-photo Neuer Benutzer

    Hallo Zusammen,

    ich bin bei MS SQL noch recht neu, und unerfahren. Leider mussten wir von Advantage Database auf den Server wechseln. Jetzt habe ich ein relativ großes Programm umgesetzt und folgendes Problem:
    Wir arbeiten mit Delphi und dem SDAC von Devart. Alle Datenbänke werden mit dem Lockmode "lmNone" geöffnet. Das Programm ist für viele User vorgesehen. Leider tritt jetzt häufiger ein Lock auf welches das Programm einfrieren läßt, bis der andere User das Programm beendet. Ich habe keinen blassen Schimmer warum das passiert. Zu 99 % läuft das Programm normal ohne Probleme. Kann mann auf dem Server feststellen was genau geblockt wird und welcher Datensatz?
    Für Anregungen wäre ich sehr dankbar!
     
  2. akretschmer

    akretschmer Datenbank-Guru

    schon mal eine Suchmaschiene befragt? LMGTFY mal als Anfang.
     
  3. castorp

    castorp Datenbank-Guru

    Willkommen in der hässlichen Welt der SQL Server Locks wo ein lesender Zugriff einen schreibenden Zugriff blockiert :(

    Du solltest Dir überlegen in der Datenbank die Option READ_COMMITTED_SNAPSHOT einzuschalten. Damit verhält sich SQL Server wie eine moderne Datenbank des 21. Jahrhunderts und lesende und schreibende Zugriffe blockieren sich nicht gegenseitig.
     
  4. so-photo

    so-photo Neuer Benutzer


    Super! Dankeschön! Bei mir stand bisher alles auf OFF. Der ADS ist in der Beziehung mega einfach, und deswegen fehlt mir die Erfahrung.
    Und so tolle Kommentare wie schon mal ne Suchmaschine genutzt sind immer klasse. Ja, aber man muss wissen wonach man eigentlich suchen muss...

    Ich werde das jetzt umstellen und hoffe dass dann alles läuft!
    VG
     
  5. ukulele

    ukulele Datenbank-Guru

  6. castorp

    castorp Datenbank-Guru

    NOLOCK ist keine wirklich gute Idee - zum einem erlaubt das Dirty Reads (brrrrr) zum anderen überschattet es das Problem nur.

    Aaron Betrand hat das in seinem Blog unter dem Motto "Bad Habits to kick" auch adressiert:
    Bad habits : Putting NOLOCK everywhere
     
    ukulele und Walter gefällt das.
  7. so-photo

    so-photo Neuer Benutzer

    Hmm, das hat das Problem eigentlich fast nur verschlimmert... jetzt hängts an allen Stellen... Der wartet einfach und läuft erst weiter wenn das andere Programm beendet wird :-/
    hatte das mit der Funktion hier eingeschaltet :

    use master
    go
    alter database [IMF-SEC]
    SET READ_COMMITTED_SNAPSHOT ON;
    go

    Anschließend auch den Server neugestartet...
    Das System welches wir hier programmiert haben ist eigentlich recht einfach. Ca 95% Lesezugriffe und max 5% Schreiben. Und das auch nur wenn der User eine Funktion ausführt...
     
  8. castorp

    castorp Datenbank-Guru

    Hmm, blöd - dann weiß ich aber leider auch nicht weiter.
    Ich muss glücklicherweise nur selten mit SQL Server arbeiten.
     
  9. akretschmer

    akretschmer Datenbank-Guru

    Da haben wir etwas gemeinsam ...
     
  10. Dravion

    Dravion Aktiver Benutzer

    Die beiden SQL-Server internen Storedprocedures

    sp_lock UND so_who geben Auskunft
    darüber was wo einen lock hält.
     
    Walter gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden