Ändert die Werte von Datenbank- und Verbindungsoptionen.
SET [ EXISTING ] [ TEMPORARY ] OPTION [ userid.| PUBLIC.]option-name = [ option-value ]
SET [ EXISTING ] [ TEMPORARY ] OPTION [ userid.| PUBLIC.]option-name = [ identifier ]
userid : identifier
option-name : identifier
option-value : ON, OFF, NULL, string literal, number, hostvar, oder @variable-name
option-value Bei Syntax 1 kann für option-value Folgendes angegeben werden:
Bei Syntax 2 können Sie jeden gültigen Bezeichner als Optionswert angeben. Zudem behandelt der Datenbankserver den Namen des Bezeichners, als wäre er ein in Apostrophe eingeschlossenes Zeichenfolgenliteral. Die folgenden Anweisungen sind beispielsweise gleichwertig:
SET TEMPORARY OPTION ansi_update_constraints = 'strict'; |
SET TEMPORARY OPTION ansi_update_constraints = strict; |
Die SET OPTION-Anweisung wird verwendet, um Optionen zu ändern, welche das Verhalten des Datenbankservers beeinflussen. Die Einstellung eines Optionswerts kann das Verhalten für alle Benutzer (PUBLIC), für einen einzelnen Benutzer oder für die aktuelle Verbindung ändern. Die neue Einstellung kann entweder temporär oder permanent gelten.
Die folgenden Optionsklassen können mit der SET OPTION-Anweisung eingestellt werden:
Optionsbereich Bei den meisten Optionen können Sie die Werte in drei Bereichsstufen einstellen: öffentlich, Benutzer und Verbindung. Einige spezifische Optionen, z.B. login_mode, sind auf die öffentliche Stufe beschränkt. Eine Verbingungsoption hat den Vorrang vor den beiden anderen Stufen und Benutzeroptionen haben Vorrang vor öffentlichen Optionen. Zum Festlegen einer Option auf Verbindungsebene verwenden Sie das TEMPORARY-Schlüsselwort. Wenn Sie eine Benutzeroption für den aktuellen Benutzer einstellen, wird gleichzeitig die entsprechende Option auf Verbindungsebene eingestellt.
Standardmäßig gilt der Optionswert für die gegenwärtig angemeldete Benutzer-ID, die die SET OPTION-Anweisung ausgeführt hat. Wenn Sie eine Benutzer-ID angeben, gilt der Optionswert für diesen Benutzer. Wenn Sie PUBLIC angeben, gilt der Optionswert für alle Benutzer, die keine individuelle Einstellung für die Option haben.
TEMPORARY-Optionen Standardmäßig ist ein neuer Optionswert permanent, es sei denn, das TEMPORARY-Schlüsselwort ist angegeben. Das Hinzufügen des Schlüsselworts TEMPORARY zur SET OPTION-Anweisung verändert die Dauer des Änderungsvorgangs.
Wenn die SET TEMPORARY OPTION-Anweisung nicht mit einer Benutzer-ID qualifiziert wird, ist der neue Optionswert nur für die aktuelle Verbindung wirksam.
Wenn SET TEMPORARY OPTION für die PUBLIC-Rolle verwendet wird, gilt die Änderung so lange, wie die Datenbank läuft. Wenn die Datenbank heruntergefahren wird, werden TEMPORARY-Optionen für die PUBLIC-Rolle wieder auf ihren dauerhaften Wert zurückgesetzt.
Das Setzen von temporären Optionen für die PUBLIC-Rolle bietet Sicherheitsvorteile. Wenn zum Beispiel die login_mode-Option aktiviert ist, richtet sich die Datenbank nach der Login-Sicherheit des Systems, auf dem sie läuft. Diese temporär zu aktivieren bedeutet, dass eine Datenbank, die sich auf die Sicherheit einer Windows-Domäne bezieht, nicht gefährdet wird, wenn sie heruntergefahren und auf ein lokales System kopiert wird. In diesem Fall wird die temporäre Aktivierung der Option login_mode wieder auf ihren permanenten Wert zurückgesetzt, der "Standard" sein kann, ein Modus, in dem integrierte Logins nicht zulässig sind.
Entfernen von Optionseinstellungen Wenn option-value nicht angegeben ist, wird die angegebene Optionseinstellung aus der Datenbank gelöscht. Wenn es sich um eine Optionseinstellung auf Benutzerebene gehandelt hat, wird der Wert wieder auf die PUBLIC-Einstellung zurückgesetzt. Beim Löschen der TEMPORARY-Option wird die Optionseinstellung auf die permanente Einstellung für den Benutzer zurückgesetzt.
Optionsdatentypen Optionen können boolesche, nummerische, oder Zeichenfolgenwerte haben, werden jedoch in der Datenbank immer als Zeichenfolgen gespeichert. Optionseinstellungen werden immer als Zeichenfolgen zurückgegeben, unabhängig davon, ob sie das Ergebnis einer Eigenschaftenfunktion, einer Funktion oder einer Systemprozedur sind. Optionswerte können nicht länger sein als die Seitengröße der Datenbank.
Benutzerdefinierte Optionen Jede Option, ob benutzerdefiniert oder nicht, muss eine öffentliche Einstellung haben, bevor ein benutzerspezifischer Wert zugeordnet werden kann. Der Datenbankserver unterstützt bei benutzerdefinierten Optionen nicht das Setzen von TEMPORARY-Werten. Wenn Sie zum Beispiel eine benutzerdefinierte Option mit dem Namen ApplicationControl erstellen möchten, müssen Sie zuerst die folgende Anweisung ausführen:
SET OPTION PUBLIC.ApplicationControl = 'Default'; |
Diese Anweisung setzt die ApplicationControl-Option für alle Benutzer auf "Default" und wird bei jeder neuen Verbindung mit dem Server wirksam. Danach kann ein einzelner Benutzer seine eigene Einstellung für diese Option festlegen, indem er eine separate SET OPTION-Anweisung ausführt.
Einschränkungen Wenn Sie das EXISTING-Schlüsselwort verwenden, können Optionswerte nicht für eine einzelne Benutzer-ID gesetzt werden, es sei denn, es gibt bereits eine PUBLIC-Einstellung für die betreffende Option.
Ändern Sie Optionswerte nicht, während ein Cursor geöffnet ist. Das Ändern der Optionswerte bei geöffnetem Cursor kann zu inkonsistenten Ergebnissen in dem Cursor führen. Wenn Sie beispielsweise die date_format-Option ändern, während ein Cursor geöffnet ist, kann dies dazu führen, dass einige Zeilen im alten Format zurückgegeben werden und einige Zeilen im neuen Format. Um zu gewährleisten, dass die Zeilen in der Ergebnismenge konsistent mit dem neuen Optionswert berechnet werden, öffnen Sie den Cursor erst nach dem Ändern des Optionswerts.
Es gibt mehrere Möglichkeiten, den Wert von spezifischen Optionen für eine Verbindung oder einen Benutzer abzufragen.
Die SET OPTION-Anweisung wird vom SQL Flagger ignoriert.
Jeder Benutzer kann seine eigenen Optionen setzen.
Um Datenbankoptionen für andere Benutzer oder Rollen, einschließlich der PUBLIC-Rolle, setzen zu können, benötigen Sie eines der folgenden Systemprivilegien, je nachdem, welches Privileg die betreffende Option erfordert:
Wenn TEMPORARY nicht angegeben ist, erfolgt ein automatisches Festschreiben.
SQL/2008 Erweiterung des Herstellers.
Das Datumsformat wird für alle Benutzer ohne individuelle Einstellung festgelegt:
SET OPTION PUBLIC.date_format = 'Mmm dd yyyy'; |
Die Option wait_for_commit wird auf On gesetzt:
SET OPTION wait_for_commit = 'On'; |
Das folgende Fragment ist ein Embedded SQL-Beispiel:
EXEC SQL SET TEMPORARY OPTION date_format = :value; |
Legen Sie die date_format-Option für den Benutzer fest, der derzeit verbunden ist. Zukünftige Verbindung für dieselbe Benutzer-ID verwenden diesen Optionswert.
SET OPTION date_format = 'yyyy/mm/dd'; |
Die folgende Anweisung entfernt die Einstellung der Option date_format für die aktuelle Benutzer-ID. Nach dem Ausführen der Anweisung wird stattdessen die date_format-Einstellung für PUBLIC verwendet.
SET OPTION date_format=; |
Die folgende Anweisung ändert die login_mode-Option für Berechtigungsempfänger der PUBLIC-Rolle in "Standard":
SET OPTION PUBLIC.login_mode = 'Standard'; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |