Jump to content

Lock durch lesenden ODBC Zugriff?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

Hallo Leute,

 

mich beschäftigt zur Zeit eine Frage zum lesenden Zugriff auf eine SQL Server 2012 Datenbank in Bezug auf Tabellenlocks.

Wir haben festgestellt das beim Zugriff die komplette Tabelle gelockt wird, obwohl der User nur lesenden Zugriff hat.

Der User hat die Rolle db_datareader zugeordnet, ich hatte nicht damit gerechnet, das dabei Tabellen gesperrt werden.

 

Gibt es einen Weg, diese Sperren zu vermeiden?

 

Gruß

Link to post

Moin,

 

das ist eine Frage des Isolation Levels und der Transaktionssteuerung. Wenn die lesende Transaktion sofort wieder beendet wird, entfernt der SQL Server auch den Lock. Leider halten manche Clients die ganze Zeit eine Transaktion offen. Möglicherweise werdet ihr das nicht ändern können, ohne den Client-Code anzupassen.

 

http://lmbtfy.com/?q=sql+server+locking

 

Gruß, Nils

Link to post

Hi Ihr beiden,

 

das habe ich auch schon gelesen und verstanden. Konkret geht es hier um Abfragen die aus Access und/oder Excel kommen.

Nun bin ich auf der Suche, in diesen Anwendungen das Isolation Level auf read uncommitted zu stellen, damit sollte ja dann keine Sperre mehr entstehen.

Gibts hierzu Erfahrung?

 

Das Problem tritt in  der  Regel  auf, wenn die  Anwendung einen ungeeigneten Isolation Level verwendet:

 

https://msdn.microsoft.com/de-de/library/ms173763.aspx

 

Da kann man i.d.R. nur etwas an der Anwendung machen.

 

 

Moin,

 

das ist eine Frage des Isolation Levels und der Transaktionssteuerung. Wenn die lesende Transaktion sofort wieder beendet wird, entfernt der SQL Server auch den Lock. Leider halten manche Clients die ganze Zeit eine Transaktion offen. Möglicherweise werdet ihr das nicht ändern können, ohne den Client-Code anzupassen.

 

http://lmbtfy.com/?q=sql+server+locking

 

Gruß, Nils

Link to post

Moin,

 

ääähhh ... Vorsicht mit sowas! Solche Änderungen darf man nur ausführen, wenn man alle zugreifenden Anwendungen und ihre Vorgehensweisen kennt!

 

Wie zahni schon sagt: Es drohen Inkonsistenzen, die u.U. auch Folgen haben können.

 

Vielleicht findet sich hier was, ich hab nicht genug Zeit, um das eingehender zu lesen:

https://technet.microsoft.com/en-us/library/bb188204(v=sql.90).aspx

 

Gruß, Nils

Edited by NilsK
Link to post

Moin,

 

ich kann mich Nils nur anschließen. Nicht einfach an der DB werkeln ohne das mit dem Softwarelieferanten/Entwicklern abzustimmen.

 

Nebenbei: Office Anwendungen direkt per ODBC auf produktive Datenbanken loszulassen ist schon sehr mutig.

Als ich noch intensiver mit SQL unterwegs war, haben wir für solche Fälle read only views erstellt.

Link to post

Mit den Views habt Ihr prinzipiell recht. Allerdings kann es der Anwendung  egal sein, ob da noch jemand mit Dirty Reads arbeitet. Es müssen hier  nur  die datentechnischen Nachteile bekannt sein.

In unseren Statistik-Anwendungen auf  DB2 arbeiten wir mittlerweile auch nur noch mit Dirty Reads, weil  die  eigentlichen Anwendungen sonst gestört werden.

In DB2 schlägt  sich der Isolation Level bei Views  auch auf Tabellen durch, es sei denn, man benutzt MQTs oder ähnliches.

Link to post

Moin,

 

kann man ja auch machen - aber dann muss man sich beim Anwendungsdesign über die Folgen im Klaren sein. Einfach mal so was umstellen wäre keine gute Idee - vor allem nicht, wenn verschiedene Applikationen auf dieselben Daten zugreifen.

 

Gruß, Nils

Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...