Kategorien:

Kontextfunktionen

CURRENT_AVAILABLE_ROLES

Gibt eine Zeichenfolge (VARCHAR) zurück, die eine Liste aller dem aktuellen Benutzer zugewiesenen Kontorollen enthält.

Die zurückgegebene Zeichenfolge enthält eine JSON-kodierte Liste aller Rollen, die der Benutzer in einer Benutzersitzung aktivieren kann (mit einer USE ROLE- oder USE SECONDARY ROLES-Anweisung).

Die Liste enthält alle Rollen, die dem Benutzer direkt zugewiesen sind, sowie alle Rollen, die dieser Rollen in der Hierarchie untergeordnet 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, CURRENT_SECONDARY_ROLES, IS_ROLE_IN_SESSION

Syntax

CURRENT_AVAILABLE_ROLES()
Copy

Nutzungshinweise

  • Diese Funktion gibt nur bei Abfrage durch einen Benutzer eine Liste von Kontorollen 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.

  • Diese Funktion gibt nicht die Namen von Datenbankrollen zurück.

  • Diese Funktion berücksichtigt keine Rollenaktivierungen in einer Sitzung.

    Wenn diese Funktion beispielsweise in den Bedingungen einer Maskierungsrichtlinie oder einer Zeilenzugriffsrichtlinie angegeben wird, könnte die Richtlinie den Zugriff unbeabsichtigt einschränken.

    Wenn Rollenaktivierung und Rollenhierarchie in den Richtlinienbedingungen erforderlich sind, verwenden Sie IS_ROLE_IN_SESSION.

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" ] |
+-----+----------------------------------------------------+
Copy

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"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
Copy