Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Datenbanken erstellen » Transaktionen und Isolationsstufen verwenden » Funktionsweise von Sperren

 

Informationen über Sperren abrufen

Zur Diagnose eines Sperrenproblems in der Datenbank kann es hilfreich sein, den Inhalt der gesperrten Zeilen zu kennen. Sie können die aktuell in einer Datenbank aktiven Sperren anzeigen, indem Sie die Systemprozedur "sa_locks" oder das Register Tabellensperren in Sybase Central benutzen. Beide Methoden liefern die benötigten Informationen, darunter die Verbindung, die die Sperre hält, die Sperrendauer und den Sperrentyp.

Hinweis

Aufgrund der flüchtigen Natur von Sperren in der Datenbank ist es möglich, dass Zeilen, die in Sybase Central sichtbar sind oder die von der Systemprozedur "sa_locks" geliefert werden, beim Abschluss einer Abfrage nicht mehr existieren.

Sperren mit Sybase Central anzeigen

Sie können Sperren in Sybase Central anzeigen. Markieren Sie eine Datenbank im linken Fensterausschnitt und klicken Sie auf das Register Tabellensperren im rechten Fensterausschnitt. Dieses Register zeigt für jede Sperre die Verbindungs-ID, die Benutzer-ID, den Tabellennamen, den Sperrentyp und den Sperrennamen an.

Sperren mit der Systemprozedur "sa_locks" anzeigen

Die Ergebnismenge der Systemprozedur "sa_locks" enthält die Spalte "row_identifier", in der Sie feststellen können, auf welche Zeile in einer Tabelle sich die Sperre bezieht. Um die Werte zu ermitteln, die in der gesperrten Zeile gespeichert sind, können Sie die Ergebnisse der Systemprozedur "sa_locks" mit einer bestimmten Tabelle verknüpfen, indem Sie die RowId der Tabelle im Join-Prädikat benutzen. Zum Beispiel:

SELECT S.conn_id, S.user_id, S.lock_class, S.lock_type, E.* 
  FROM sa_locks() S JOIN Employees E WITH( NOLOCK ) 
     ON RowId(E) = S.row_identifier 
  WHERE S.table_name = 'Employees';
Hinweis

Möglicherweise ist es nicht erforderlich, den Tabellen-Hint NOLOCK anzugeben. Falls die Abfrage jedoch auf einer anderen Isolationsstufe als 0 benutzt wird, könnte die Abfrage blockiert sein, bis die Sperren freigegeben werden, wodurch die Effizienz dieser Prüfmethode etwas eingeschränkt wird.

Siehe auch

Weitere Hinweise zur Systemprozedur "sa_locks" finden Sie unter sa_locks-Systemprozedur.

Weitere Hinweise zum Tabellen-Hint NOLOCK finden Sie unter FROM-Klausel.

Weitere Hinweise zur ROWID-Funktion finden Sie unter ROWID-Funktion [Verschiedene].