Kategorien:

Kontextfunktionen (Allgemein)

IS_DATABASE_ROLE_ACTIVATED (SYS_CONTEXT-Funktion)

Gibt den VARCHAR-Wert 'TRUE' zurück, wenn eine Datenbankrolle in der aktuellen Sitzung aktiviert ist.

Siehe auch:

SYS_CONTEXT (SNOWFLAKE$SESSION-Namespace)-IS_ROLE_ACTIVATED (SYS_CONTEXT-Funktion)

Syntax

SYS_CONTEXT(
  'SNOWFLAKE$SESSION' ,
  'IS_DATABASE_ROLE_ACTIVATED' ,
  '<database_role>'
)
Copy

Argumente

'SNOWFLAKE$SESSION'

Gibt an, dass Sie eine Funktion aufrufen möchten, um Kontextinformationen über die aktuelle Sitzung zurückzugeben.

'IS_DATABASE_ROLE_ACTIVATED'

Ruft die IS_DATABASE_ROLE_ACTIVATED-Funktion auf.

'database_role'

Gibt die zu prüfende Datenbankrolle an. Der Name kann vollqualifiziert oder relativ sein.

Rückgabewerte

Die Funktion gibt einen der folgenden VARCHAR-Werte zurück:

  • 'TRUE', wenn die Primärrolle oder die Sekundärrollen des aktuellen Benutzenden der Sitzung die Berechtigungen der angegebenen Datenbankrolle erben.

  • 'FALSE', wenn die angegebene Datenbankrolle nicht in der Hierarchie der aktiven Rolle des Benutzenden enthalten ist oder wenn die Datenbankrolle nicht existiert.

Zum Vergleich dieses Rückgabewerts mit dem BOOLEAN-Wert TRUE oder FALSE müssen Sie den Rückgabewert in BOOLEAN umwandeln. Beispiel:

SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'my_db_role')::BOOLEAN = TRUE;
Copy

Nutzungshinweise

  • Diese Funktion wird in Governance-Richtlinien (wie Maskierungsrichtlinien, Zeilenzugriffsrichtlinien oder Projektionsrichtlinien), die auf freigegebene Tabellen angewendet werden, nicht unterstützt. Freigegebene Objekte können nicht auf den Sitzungsstatus von Verbrauchenden zugreifen.

  • Wenn Sie keinen vollqualifizierten Namen angeben, löst die Funktion den Datenbankkontext der Datenbankrolle wie folgt auf:

    • Abfragen: Sitzungsdatenbank (die aktuell verwendete Datenbank).

    • Textkörper/Body einer Datenschutzrichtlinie: Datenbank, die die geschützte Tabelle oder Ansicht enthält.

    • Freigabe: Datenbank im Konto des Verbrauchenden.

  • Diese Funktion kann nicht in Definitionen für materialisierte Ansichten verwendet werden, da die Funktion nicht deterministisch ist.

Beispiele

Überprüfen einer Datenbankrolle in der aktuellen Datenbank anhand eines relativen Namens:

SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'ANALYST_ROLE');
Copy
+-------------------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'ANA...  |
+-------------------------------------------------------------------------+
| TRUE                                                                    |
+-------------------------------------------------------------------------+

Überprüfen einer Datenbankrolle in einer anderen Datenbank mit einem vollqualifizierten Namen:

SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'DB2.READER_ROLE');
Copy
+-------------------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'DB ...  |
+-------------------------------------------------------------------------+
| TRUE                                                                    |
+-------------------------------------------------------------------------+