Kategorien:

Kontextfunktionen

CURRENT_AVAILABLE_ROLES

Gibt eine Zeichenfolge (VARCHAR) zurück, die alle dem aktuellen Benutzer zugewiesenen Rollen auflistet.

Die zurückgegebene Zeichenfolge enthält eine JSON-kodierte Liste aller Rollen, die der Benutzer in einer USE ROLE-Anweisung angeben kann. Dazu gehören alle Rollen, die dem Benutzer direkt zugewiesen sind, sowie alle Rollen mit niedrigeren Berechtigungen in der Hierarchie der Rollen, die dem Benutzer indirekt zugewiesenen sind. Der zurückgegebene Wert kann an die Funktion PARSE_JSON übergeben werden, um einen VARIANT-Wert zu erhalten, der eine Liste aller verfügbaren Rollen enthält.

Siehe auch:

CURRENT_ROLE, IS_ROLE_IN_SESSION

Syntax

CURRENT_AVAILABLE_ROLES()

Nutzungshinweise

  • Diese Funktion gibt nur bei Abfrage durch einen Benutzer eine Liste von Rollen zurück. Die Abfrage der Funktion über einen Dienst, der keinen aktiven Benutzer hat, kann zu einer fehlgeschlagenen Abfrage führen. Beispiel: Die Funktion gibt keine Liste von Rollen zurück, wenn sie innerhalb einer Aufgabe abgefragt wird, da die Aufgabenausführungen von einem Systemdienst ausgeführt werden, der nicht mit einem Benutzer verbunden ist. In diesem Fall kann die Abfrage eine Zeitüberschreitung verursachen, weil der Abfrageplan nicht abgeschlossen werden kann.

Beispiele

Rufen Sie die Liste der dem aktuellen Benutzer zugewiesenen Rollen ab:

SELECT CURRENT_AVAILABLE_ROLES();

+----------------------------------------------------------+
| ROW | CURRENT_AVAILABLE_ROLES()                          |
+-----+----------------------------------------------------+
|  1  | [ "PUBLIC", "ANALYST", "DATA_ADMIN", "DATA_USER" ] |
+-----+----------------------------------------------------+

Verwenden Sie die Funktion PARSE_JSON, um einen VARIANT-Wert zurückzugeben, und die Funktion FLATTEN, um eine einzelne Zeile für jede Rolle zu erhalten:

SELECT INDEX,VALUE,THIS FROM TABLE(FLATTEN(input => PARSE_JSON(CURRENT_AVAILABLE_ROLES())));

+-----+-------+------------------------+---------------------------+
| ROW | INDEX | VALUE                  | THIS                      |
+-----+-------+------------------------+---------------------------+
|   1 |     0 | "PUBLIC"               | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
|   2 |     1 | "ANALYST"              | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
|   3 |     2 | "DATA_ADMIN"           | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
|   4 |     3 | "DATA_USER"            | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+