Hallo,
ich habe bei einem Anwender, bei dem ca. 20 Benutzer auf einem Win2003-Terminalserver arbeiten, gravierende Probleme mit dem
SQL Server 2005 (Delphi5-Projekt mit
ADO). Meine Vermutung ist, dass dieses spezifische Problem nur dann auftritt, wenn mindestens ein User in seiner Terminalsitzung das Programm mehrmals gestartet hat. Hat jeder Benutzer nur eine Instanz offen, ist soweit alles in Ordnung.
Nun zum eigentlichen Problem: Es gibt Statistiken mit mehreren Minuten Laufzeit. Dabei wird lesend auf eine Tabelle zugegriffen, was zu einem S-Lock führt. Daher habe ich bewusst den Isolation Level auf "Read Uncommited" gesetzt, damit während der Datenaufbereitung andere Benutzer Datensätze in dieser Tabelle einfügen können. Die neuen Datensätze sollen sowieso nicht in der Statistik berücksichtigt werden.
Während der Datenaufbereitung ist der Terminalserver und der Datenbankserver nicht ausgelastet (CPU, Speicher usw.). Trotzdem friert bei anderen Benutzern der Bildschirm ein, wenn neue Datensätze eingefügt werden sollen. Ist die Statistik fertig, können alle anderen Benutzer wieder arbeiten. Also müsste es sich an dieser Stelle um einen Lock auf die Tabelle handeln. Wie gesagt - das Phänomen tritt nur auf, wenn "irgendein" anderer Terminalserver-User mehrere Instanzen in seiner Terminalsitzung offen hat.
Wer hat Erfahrung mit "Read Uncommited" auf MS-Terminalserver? Gibt es einen Isolation Level, der noch weniger restriktiv ist und möglichst gar keine Sperren mehr setzt?
Vielen Dank und noch schöne Feiertage,
Christian