Anfang des InhaltsbereichsCONNECT-Anweisung (connect_statement) Dokument im Navigationsbaum lokalisieren

Eine CONNECT-Anweisung ( connect_statement ) eröffnet eine Datenbanksitzung und eine Transaktion eines Benutzers des Datenbanksystems.

Syntax

<connect_statement> ::=
  CONNECT <parameter_name> IDENTIFIED BY <parameter_name> [<connect_option>...]
| CONNECT <parameter_name> IDENTIFIED BY <password> [<connect_option>...]
| CONNECT <user_name> IDENTIFIED BY <parameter_name> [<connect_option>...]
| CONNECT <user_name> IDENTIFIED BY <password> [<connect_option>...]

<connect_option> ::=
  SQLMODE <INTERNAL | ANSI | DB2 | ORACLE>
| ISOLATION LEVEL <unsigned_integer> | TIMEOUT <unsigned_integer>
| TERMCHAR SET <termchar_set_name>

parameter_name, password, user_name, unsigned_integer, termchar_set_name

Erläuterung

Bei zulässiger Kombination der Werte von Parametername/Benutzername und Parametername/Kennwort eröffnet der Benutzer eine Datenbanksitzung und erhält Zugang zur Datenbankinstanz. Er ist damit der aktuelle Benutzer in dieser Sitzung.

Es wird implizit eine Transaktion eröffnet (siehe Transaktionen). Durch die COMMIT-Anweisung oder die ROLLBACK-Anweisung wird eine Transaktion beendet und implizit eine neue Transaktion eröffnet. Bei jedem Transaktionsende werden alle der Transaktion zugeordneten Sperren freigegeben, falls sie nicht durch ein KEEP LOCK gehalten werden. Für jede neu eröffnete Transaktion gilt das in der CONNECT-Anweisung angegebene Isolation-Level.

Jede CONNECT-Option ( connect_option ) darf nur einmal angegeben werden.

SQL-Modus

Mit der Angabe SQLMODE <INTERNAL | ANSI | DB2 | ORACLE> kann der SQL-Modus ausgewählt werden. Vorschlagswert ist der SQL-Modus INTERNAL.

Die CONNECT-Option SQLMODE <INTERNAL | ANSI | DB2 | ORACLE> ist innerhalb von Programmen nicht zulässig. Dort ist zur Angabe eines vom SQL-Modus INTERNAL abweichenden SQL-Modus die entsprechende Precompiler-Option zu verwenden.

Sperren / ISOLATION LEVEL

Die Integer-Zahl ohne Vorzeichen nach den Schlüsselwörtern ISOLATION LEVEL darf nur die Werte 0, 1, 2, 3, 10, 15, 20 und 30 annehmen.

Sperren (siehe Transaktionen) können implizit oder explizit angefordert werden. Die explizite Anforderung einer Sperre geschieht mittels der LOCK-Anweisung. Ob eine Sperre implizit angefordert wird oder explizit angefordert werden muß, hängt vom angegebenen Isolation-Level ab. Wie lange eine implizit gesetzte SHARE-Sperre gehalten wird, hängt ebenfalls vom Isolation-Level ab. Implizit gesetzte exklusive Sperren können innerhalb einer Transaktion nicht freigegeben werden. Die explizite Anforderung einer Sperre ist bei jedem Isolation-Level möglich.

Die Wahl des Isolation-Level hat Auswirkungen auf den Grad der Parallelität und die garantierte Konsistenz. Unter einem hohen Grad von Parallelität versteht man den Zustand, in dem möglichst viele konkurrierende Transaktionen auf dem gleichen Datenbestand ohne lange Wartezeiten auf die Freigabe von Sperren arbeiten können. Bei der Konsistenz unterscheidet man verschiedene Phänomene, die bei konkurrierenden Zugriffen auf den gleichen Datenbestand auftreten können:

Die folgende Tabelle gibt Auskunft darüber, welche Phänomene unter welchem Isolation-Level möglich sind:

 

Diese Grafik wird im zugehörigen Text erklärt

 

Je niedriger der Wert des Isolation-Level ist, desto höher ist der Grad der Parallelität und desto niedriger ist die garantierte Konsistenz. In Abhängigkeit von den Anforderungen einer Applikation muß also immer ein Kompromiß zwischen Parallelität und Konsistenz gefunden werden.

TIMEOUT

Der TIMEOUT-Wert legt die maximale Inaktivitätsdauer während der Datenbanksitzung fest. Die Inaktivitätsdauer ist das Zeitintervall zwischen Beendigung einer SQL-Anweisung und dem Absetzen der nächsten SQL-Anweisung. Wenn die angegebene maximale Inaktivitätsdauer überschritten wird, wird die Sitzung implizit mittels ROLLBACK WORK RELEASE abgeschlossen.

Die Angabe eines TIMEOUT-Wertes erfolgt in Sekunden. Der angegebene TIMEOUT-Wert muß kleiner oder gleich dem maximalen TIMEOUT-Wert sein.

Wenn kein TIMEOUT-Wert angegeben wird, wird der kleinere Wert des maximalen TIMEOUT- oder SESSION-TIMEOUT-Wertes angenommen. Der Wert für den SESSION_TIMEOUT wird bei der Installation des Datenbanksystems festgelegt.

Wird für den TIMEOUT-Wert 0 angegeben, so erfolgt keine Überprüfung der Inaktivitätsdauer. Das kann dazu führen, daß Datenbankressourcen nicht wieder zur Verfügung stehen, obwohl die zugehörige Anwendung schon, ggf. durch einen Abbruch, ohne eine RELEASE-Anweisung beendet wurde.

Benutzer mit dem Attribut NOT EXCLUSIVE

Wenn ein Benutzer mit dem Attribut NOT EXCLUSIVE definiert wurde, kann er mehrere Sitzungen zur gleichen Zeit eröffnen. Wenn dies der Fall ist oder zwei Benutzer derselben Benutzergruppe zur gleichen Zeit eine Sitzung eröffnet haben, gelten die Sitzungen als verschieden, d. h. Sperranforderungen der beteiligten Sitzungen können kollidieren.

TERMCHAR SET

Terminal-Zeichensatzname

Benutzerhandbuch: SAP DB ® Begriffe ® Strukturlink Terminalunterstützung (Termchar-Sets)

Ende des Inhaltsbereichs