Kategorien:

Kontextfunktionen

CURRENT_AVAILABLE_ROLES

Gibt eine Liste aller dem aktuellen Benutzer auf Kontoebene zugewiesenen Rollen enthält. Die Liste enthält alle Rollen, die dem Benutzer direkt zugewiesen sind, sowie alle Kontorollen, die dieser Rollen in der Hierarchie untergeordnet sind.

Siehe auch:

CURRENT_ROLE, CURRENT_SECONDARY_ROLES, IS_ROLE_IN_SESSION

Syntax

CURRENT_AVAILABLE_ROLES()
Copy

Argumente

Keine.

Rückgabewerte

Gibt eine Zeichenfolge (VARCHAR) zurück, die eine JSON-kodierte Liste der verfügbaren Rollen auf Kontoebene ist. 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.

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 nicht die Klasse Namen von Datenbankrollen, Anwendungsrollen oder Rollen von Klasseninstanzen 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