Tabellensperren aufzeichnen und analysieren

14. März 2008 12:01

In SQL Management Studio (weil SQL Server 2005) gibt es unter Datenbanken --> Verwaltung den Aktivitätsmonitor, wo ich nachsehen kann, welche Tabellen gerade durch wen gesperrt werden.

Könnte mir jemand helfen?

- Besteht die Möglichkeit, diese Daten zu protokollieren/aufzuzeichnen?
- Wenn ich einen Filter auf eine bestimmte Datenbank lege, so scheint dieser nicht ausgeführt zu werden. Er bleibt aber unter den Filtereinstellungen gespeichert. Mache ich was falsch oder ist das ein Bug?

15. März 2008 10:49

Hi!

Nun, im Prinzip ist es schon möglich, die einzelnen Lock/Block-Infos zu speichern; das Verfahren ist dabei wie folgt:

# Ein "Alert" überwacht den Performance Counter "SQLServer:General Statistics - Processes Blocked".
# Wird der Schwellwert von "0" übeschritten, so triggert der "Alert" einen "Job", der wiederum eine Auszug aus den relevanten Systemtabellen in eine Protokolltabelle speichert.
# Diese protokollierten Infos können dann umfassend ausgewertet werden

Im Prinzip recht simple - und daher genau das, was man braucht - man muss nur ein wenig TSQL können ...

Genau an dieser Stelle MUSS ich darauf hinweisen, dass ich GENAU zu diesem Thema einen Vortrag auf der "Directions EMEA" im April in Paris halten werde!
Im Anschluss an den Vortrag werde ich auch ein Paket mit diversen TSQL Vorlagen zum Download zur Verfügung stellen (meine Homepage, sowie diverse Foren :wink: ).

<Werbung>
Dieses Tool - hier in der "Light Version" - ist u.a. Bestandteil meiner "NAV/SQL Performance Toolbox"
</Werbung>

Ich bin gerade in der Vorbereitung für diesen Vortrag, sobald das besagte Paket fertig ist, werde ich schon vorab in MSDynamics.de einstellen - soz. als "Sneak Preview" :-)

Was das filtern auf die DB angeht, so sollte das schon funzen, bei mir tut's das auch (Build 9.0.3200).

Gruß,
Jörg

15. März 2008 20:47

Dann sollte es auch bestimmt kein Problem sein, nur eine bestimmte Tabelle zu überwachen und außerdem festzustellen, wer gerade sperrt, oder?

16. März 2008 10:32

Nun, meine Art dieser "Block Detection" ist so angelegt, dass sie das "Who is Who" ALLER Blockaden aufzeichnet, also wer gegen wen, wann und bei welcher Ressource, etc.. Damit lassen sich sowohl User- als auch Tabellen-bezogene Auswertungen durchführen ...

17. März 2008 10:48

stryk hat geschrieben:Was das filtern auf die DB angeht, so sollte das schon funzen, bei mir tut's das auch (Build 9.0.3200).


Unser Kunde und wir haben die Version 9.00.3042 bzw. 9.00.1399. Dies dürfte das Phänomen erklären.

Wie wird der Server-Manager aktualisiert? Windowsupdate? Kauf? ...?

17. März 2008 12:44

Hier findest Du Links zu allen verfügbaren Updates zu SQL Server 2005:

http://support.microsoft.com/kb/937137

D.h., die aktuellste Version von SQL Server 2005 ist 9.0.3228 (kumulatives Update 6).

Die Updates/Servicepacks müssen z.T. beim MS Support angefragt werden, Du erhältst dann per e-Mail einen Link für den Download.

Für Deine konkreten Fälle brauchst Du also:

0. Start: 9.0.1399 (erster Release, hat einige schwere Bugs!)
1. Upgrade auf SP2: 9.0.3042
2. Update auf Update 6: 9.0.3228

Ich empfehle immer nur die "kumulativen Updates" zu installieren, die einzelnen Hotfixes nur wenn das beschriebene Problem wirklich zutrifft.