Mein leitender DBA hat mir mitgeteilt, dass die Ausführung von SQL Query die Tabelle standardmäßig nicht sperrt.
Ich hatte einige Probleme mit meinem SSRS-Bericht (SQL Server Reporting Services), bei denen anscheinend Probleme beim Sperren und bei Fehlern aufgetreten sind.
Ich habe ein bisschen gegoogelt, aber nichts gefunden.
Sperren SSRS-Berichte die Tabellen, die abgefragt werden?
Gibt es eine MSDN-Dokumentation, die dieses Verhalten speziell dokumentiert?
sql-server-2008
locking
melaos
quelle
quelle
SET TRANSACTION ISOLATION LEVEL
beispielsweise Datensatzabfragen gestartet haben, um beispielsweiseREAD UNCOMMITTED
ein paar schmutzige Lesevorgänge zu riskieren.Antworten:
Kurze Antwort: Nein
Länger...
SQL Server weiß nicht, dass SSRS ihm eine Abfrage sendet. Die Abfrage von SSRS wird also wie jede andere Abfrage ausgeführt.
Es ist wahrscheinlicher, dass der Abfrageoptimierer eine Tabellensperre für die SSRS-Abfrage verwendet. Natürlich könnte es ein anderes Problem sein, aber das ist eine andere Frage
quelle
Das ist wahr. Dies bedeutet jedoch nicht, dass eine Abfrage eine Tabelle nicht sperren kann .
SSRS ruft die zum Rendern des Berichts verwendeten Daten ab, indem eine Abfrage oder eine gespeicherte Prozedur für die Datenbank ausgeführt wird.
Diese Abfrage wird vom Entwickler definiert und kann dazu führen , dass eine Tabelle (oder Tabellen) gesperrt wird, abhängig von der Isolationsstufe und der Anzahl der beteiligten Zeilen. (In der Tat kann es Fälle geben, in denen Sie dies absichtlich tun möchten .) Unter dem Strich ist es Sache des Entwicklers, wie das Sperren für die Abfrage funktioniert. SSRS kann dieses Problem nicht für Sie lösen. Deshalb gibt es keine Dokumentation.
Betrachten Sie (zum Beispiel):
READ UNCOMMITTED
wenn Dirty Reads in Ordnung sindquelle
Woher wissen Sie, dass es eine Sperre gibt, wenn der Bericht ausgeführt wird? Ich würde Ihnen empfehlen, die Abfrage / den gespeicherten Prozess zu überprüfen, der die Quelle des Berichts ist, und sicherzustellen, dass er von selbst einwandfrei funktioniert.
Wenn Sie sicher sind, dass die Quellabfrage ordnungsgemäß funktioniert, versuchen Sie, das Problem mithilfe des SQL Server-Profilers zu ermitteln. Der folgende Link könnte hilfreich sein:
/programming/9107383/sql-server-profiler-capture-calls-to-your-databases-stored-procs-during-ssrs
quelle