Funktionen CURRENT_DATABASE und CURRENT_SCHEMA: Deterministische Ausgaben bei Richtlinien, Ansichten und UDFs sicherstellen (Verschoben)

Bemerkung

Diese Verhaltensänderung war Teil von Bundle 2023_08, wird aber nun verschoben. Die Aktualisierungen werden in einem zukünftigen Bundle erfolgen.

Das Verhalten der Funktionen CURRENT_DATABASE und CURRENT_SCHEMA ist wie folgt:

Vor der Änderung:

Die Rückgabewerte beim Aufruf der Funktionen CURRENT_DATABASE oder CURRENT_SCHEMA sind nicht deterministisch:

Wenn Sie die Funktion innerhalb einer Datenzugriffsrichtlinie, wie z. B. einer Maskierungs- oder Zeilenzugriffsrichtlinie, aufrufen, geben die Funktionen einen der beiden folgenden Werte zurück:

  • Die Datenbank oder das Schema, das die Richtlinie enthält.

  • Die Datenbank oder das Schema, das in der Sitzung verwendet wird.

Wenn Sie die Funktion in der Definition einer Ansicht oder einer UDF aufrufen und vor der Funktion nicht das Schlüsselwort SELECT steht, gibt die Funktion einen der beiden folgenden Werte zurück:

  • Die Datenbank oder das Schema, das in der Sitzung verwendet wird.

  • Die Datenbank oder das Schema, das die UDF oder die Ansicht enthält.

Nach der Änderung:

Die Rückgabewerte beim Aufruf der Funktion CURRENT_DATABASE oder CURRENT_SCHEMA sind deterministisch:

  • Wenn Sie die Funktion innerhalb einer Datenzugriffsrichtlinie aufrufen, z. B. einer Maskierungs- oder Zeilenzugriffsrichtlinie, geben die Funktionen die Datenbank oder das Schema zurück, die/das die geschützte Tabelle oder Ansicht enthält.

  • Wenn Sie die Funktion in der Definition einer Ansicht oder einer UDF aufrufen, gibt die Funktion die Datenbank oder das Schema zurück, die/das die UDF oder die Ansicht enthält.

Um die Auswirkungen dieser Änderungen zu minimieren, gehen Sie wie folgt vor:

  • Wenn Ihre Ansichtsdefinition oder UDF eine dieser Funktionen verwendet und der Funktion nicht das Schlüsselwort SELECT vorangestellt ist, überprüfen Sie, ob die Definition der UDF für die Verwendung der Funktion korrekt ist.

  • Wenn Ihre Richtlinie eine dieser Funktionen aufruft, vergewissern Sie sich, dass der Text (Body) der Richtlinie für die Datenbank oder das Schema geschrieben wurde, das die geschützte Tabelle enthält, und nicht für die Datenbank oder das Schema, die/das für die Sitzung verwendet wird.

Ref.: 1325