SHOW LOCKS¶
Listet alle laufenden Transaktionen auf, die über Sperren für Ressourcen verfügen. Der Befehl kann verwendet werden, um Sperren für den aktuellen Benutzer in allen Sitzungen des Benutzers oder für alle Benutzer im Konto anzuzeigen.
Informationen zu Transaktionen und zum Sperren von Ressourcen finden Sie unter Transaktionen.
- Siehe auch:
Syntax¶
SHOW LOCKS [ IN ACCOUNT ]
Parameter¶
IN ACCOUNTGibt alle Sperren für alle Benutzer des Kontos zurück. Dieser Parameter gilt nur, wenn er von Benutzern mit der Rolle ACCOUNTADMIN (Kontoadministratoren) ausgeführt wird.
Bei allen anderen Rollen zeigt die Funktion nur Sperren für den aktuellen Benutzer in der aktuellen Sitzung.
Ausgabe¶
Die Ausgabe des Befehls zeigt Sperrenmetadaten in den folgenden Spalten an:
Spalte |
Beschreibung |
|---|---|
|
Ein vollständig qualifizierter Tabellenname oder eine Transaktions-ID. |
|
|
|
Transaktions-ID (eine vorzeichenbehaftete 64-Bit-Ganzzahl). |
|
Zeitstempel, der angibt, wann die Ausführung der Transaktion begonnen hat. |
|
Aktueller Status der Transaktion: |
|
Zeitstempel, der angibt, wann die Sperre erworben wurde. |
|
Interner/vom System generierter Bezeichner für die SQL-Anweisung. |
|
Sitzungs-ID (nur sichtbar für Benutzer mit der Rolle ACCOUNTADMIN). |
Nutzungshinweise¶
Die Befehlsausgabe enthält die IDs für alle laufenden Transaktionen, für die Ressourcen gesperrt sind. Diese IDs können als Eingabe für SYSTEM$ABORT_TRANSACTION verwendet werden, um eine angegebene Transaktion abzubrechen.
Bei Hybridtabellen zeigt dieser Befehl eine Sperre nur an, wenn eine Transaktion blockiert ist oder wenn sie eine andere Transaktion blockiert.
Für die Ausführung des Befehls ist kein aktives Warehouse erforderlich.
Der Befehl gibt nur Objekte zurück, für die der aktuellen Rolle des aktuellen Benutzers mindestens ein Zugriffsrecht zugewiesen wurde.
Das Zugriffsrecht MANAGE GRANTS gibt seinem Eigentümer implizit die Möglichkeit, jedes Objekt im Konto anzuzeigen. Standardmäßig haben nur der Kontoadministrator (Benutzer mit der Rolle ACCOUNTADMIN) und der Systemadministrator (Benutzer mit der Rolle SECURITYADMIN) die Berechtigung MANAGE GRANTS.
Um die Ausgabe dieses Befehls nachzubearbeiten, können Sie den Befehl Pipe-Operator (
->>) oder die RESULT_SCAN-Funktion verwenden. Beide Konstrukte behandeln die Ausgabe als Resultset, das Sie abfragen können.Sie können zum Beispiel den Pipe-Operator oder die RESULT_SCAN-Funktion verwenden, um bestimmte Spalten aus der SHOW-Befehlsausgabe auszuwählen oder die Zeilen zu filtern.
Wenn Sie sich auf die Ausgabespalten beziehen, verwenden Sie Bezeichner mit doppelten Anführungszeichen für die Spaltennamen. Um beispielsweise die Ausgabespalte
typeauszuwählen, geben SieSELECT "type"an.Sie müssen Bezeichner in doppelten Anführungszeichen verwenden, da die Ausgabespaltennamen für SHOW-Befehle in Kleinbuchstaben geschrieben sind. Die doppelten Anführungszeichen stellen sicher, dass die Spaltennamen in der SELECT-Liste oder WHERE-Klausel den Spaltennamen in der SHOW-Befehlsausgabe entsprechen, die gescannt wurde.
Der Befehl gibt maximal zehntausend Datensätze für den angegebenen Objekttyp zurück, entsprechend den Zugriffsrechten für die zur Ausführung des Befehls verwendete Rolle. Datensätze, die die Grenze von zehntausend Datensätzen überschreiten, werden nicht zurückgegeben, selbst wenn ein Filter angewendet wurde.
Um Ergebnisse anzuzeigen, für die mehr als zehntausend Datensätze existieren, fragen Sie die entsprechende Ansicht (sofern vorhanden) in Snowflake Information Schema ab.
Beispiele¶
In diesem Beispiel hält eine Transaktion eine Sperre für die angegebene Standardtabelle (die in der Spalte resource genannte Tabelle).
SHOW LOCKS;
+---------------------------+------------+---------------------+-------------------------------+---------+-------------------------------+--------------------------------------+
| resource | type | transaction | transaction_started_on | status | acquired_on | query_id |
|---------------------------+------------+---------------------+-------------------------------+---------+-------------------------------+--------------------------------------|
| CALIBAN_DB.PUBLIC.WEATHER | PARTITIONS | 1721330303831000000 | 2024-07-18 12:18:23.831 -0700 | HOLDING | 2024-07-18 12:18:49.832 -0700 | 01b5c1c6-0002-8691-0000-a9950068a0c6 |
+---------------------------+------------+---------------------+-------------------------------+---------+-------------------------------+--------------------------------------+
In diesem Beispiel hält eine Transaktion eine Sperre auf Zeilenebene für eine Hybridtabelle. Eine andere Transaktion wartet auf diese Sperre.
SHOW LOCKS;
+---------------------+------+---------------------+-------------------------------+---------+-------------+--------------------------------------+
| resource | type | transaction | transaction_started_on | status | acquired_on | query_id |
|---------------------+------+---------------------+-------------------------------+---------+-------------+--------------------------------------|
| 1721165584820000000 | ROW | 1721165584820000000 | 2024-07-16 14:33:04.820 -0700 | HOLDING | NULL | |
| 1721165584820000000 | ROW | 1721165674582000000 | 2024-07-16 14:34:34.582 -0700 | WAITING | NULL | 01b5b715-0002-852b-0000-a99500665352 |
+---------------------+------+---------------------+-------------------------------+---------+-------------+--------------------------------------+