SEC_SQL-VARA-Objekte
SEC_SQL oder Secure SQL-VARA-Objekte beziehen Werte aus externen Datenbanken. SEC_SQL-VARA-Objekte sind ähnlich wie SQL-VARA-Objekte, da auch sie SQL-Statements auf einer externen Datenbank ausführen. Im Gegensatz zu SQL-VARA-Objekten bieten SEC_SQL-Objekte jedoch die Möglichkeit, alle unterstützten Variablen innerhalb von SQL-Statements zu verwenden – ohne eine mögliche Gefährdung der Datenbank durch SQL-Injection. Die Variablen werden daher unabhängig von der Einstellung VAR_SECURITY_LEVEL in der Variable UC_SYSTEM_SETTINGS - Systemweite Einstellungen ersetzt.
Dieses Thema beinhaltet Folgendes:
SEC_SQL-VARA-Objekte definieren
Die Definition eines SEC_SQL-VARA-Objekts besteht aus den folgenden Seiten:
- Seite „Allgemein“
-
Variablen
Hier legen Sie die objektspezifischen Einstellungen fest. Einige Abschnitte dieser Seite gelten für alle VARA-Objekte und werden für all diese in eigenen Themen beschrieben:
- Variablen-Einstellungen, siehe unten
- Parameter
- Datentypen und Formatierung
- Scriptzugriff
- Mandant-0-VARA-Objekte in anderen Mandanten
- Vorschau, siehe unten
- Seite „Versionsmanagement“
- Seite „Dokumentation“
Die Variablen können nicht direkt im Feld SQL-Statement angegeben werden, sondern sind über sogenannte Bind-Parameter einzuschließen. Die Bind-Parameter sind in der entsprechenden Tabelle zu pflegen und können vordefinierte Variablen, Platzhalter für VARA-Objekte und PromptSet-Variablen enthalten. Im SQL-Script ist an der Stelle, an welcher die Bind-Parameter eingefügt werden sollen, das Zeichen „?“ zu verwenden.
Aus technischen Gründen kann nicht geprüft werden, ob nur SELECT-Kommandos im SQL der Variable verwendet werden. Um die Ausführung anderer SQL-Kommandos außer SELECT zu verhindern, ist es ratsam, einen Datenbank-Benutzer zu verwenden, der nur Leserechte besitzt.
Auch für diesen Variablentyp ist ein DB-Service-Agent erforderlich, der im DB-Service-Modus gestartet wurde. Dieser muss allerdings Version v9 SP3 oder höher aufweisen. Ältere Agenten unterstützen den Variablentyp SQL SECURE nicht.
Bei der Verwendung von SEC_SQL-VARA-Objekten ist Folgendes zu beachten:
- Die maximale Anzahl der zurückgegebenen Zeilen wird in der Einstellung SQLVAR_MAX_ROWS in der Variable UC_SYSTEM_SETTINGS angegeben.
-
Datenbank-VARA-Objekte (SEC_SQLI, SEC_SQL, SQLI und SQL-Typen) unterstützen keine Binärfelder. Liefert die SQL-Abfrage Binärdaten zurück, so kommt es zu einem Fehler bei der Vorschau oder der Ermittlung der Werte zur Laufzeit.
-
In Datenbank-VARA-Objekten (SEC_SQLI, SEC_SQL, SQLI und SQL) prüft das System die SQL-Statements, die aus technischen Gründen verarbeitet werden, nicht. Sie können Datensätze mit Hilfe von VARA-Objekten ändern oder löschen. Aus Sicherheitsgründen sollten Sie den Benutzerzugriff entsprechend einschränken. Bei VARA-Objekten, die auf eine externe Datenbank zugreifen (SQL, SQL SECURE), sollte ein Datenbankbenutzer verwendet werden, der nur Leserechte besitzt. Bei internen SQL-Variablen (SQLI, SQLI SECURE), kann der Zugriff auf das Objekt durch ein Recht (SQL-interne Variablen anlegen und ändern) eingeschränkt werden.
-
Abhängig vom Datentyp liefern Datenbank-VARA-Objekte (SEC_SQLI, SEC_SQL, SQLI und SQL) den Wert "" (Zeichenfolge, Datum, Zeit, Zeitstempel) oder 0 (Zahl) für NULL-Werte zurück.
-
PromptSet-Variablen werden in ausgewählten Feldern für Variablen des Typs BACKEND, EXEC, DATEILISTE, SEC_SQLI, SEC_SQL, SQLI, SQL, und XML unterstützt. Die Verwendung von PromptSet-Variablen ist notwendig, wenn die Funktion Dynamisch aktualisieren (Combobox-Prompts) verwendet wird.
-
In den Abschnitten Variablen-Einstellungen und Bind-Parameter:
Wenn Sie die Funktion Dynamisch aktualisieren (Combobox-Prompts) für Combobox-Prompts verwenden, können Sie hier PromptSet-Variablen hinzufügen. Wenn Sie PromptSet-Variablen in einem dynamischen VARA-Objekt verwenden, gibt die Funktion Vorschau einen Fehler zurück. Der Grund hierfür ist, dass PromptSet-Variablen im dynamischen VARA-Objekten nicht existieren. Die PromptSet-Variablen werden jedoch aufgelöst, wenn Objekte, die PromptSet beinhalten, ausgeführt werden.
Abschnitt „Variablen-Einstellungen“
-
Typ
Schreibgeschützt, immer SEC_SQL.
-
Verbindung
Das Verbindung vom Typ Datenbank, das die Verbindungsparameter zur gewünschten Datenbank enthält.
-
Login
Das Login-Objekt, das den Namen und das Passwort des Datenbankbenutzers speichert.
Ist kein Login-Objekt angegeben und auch die Option Standard-Login nicht gesetzt, so werden die Anmeldedaten für den Datenbank-Zugriff aus dem Verbindungsobjekt bezogen.
Werden dort ebenfalls keine Anmeldeinformationen gefunden, so kommt es zu einem Fehler bei der Auflösung des VARA-Objekts.
-
Standard-Login
Die Auswahl eines Login-Objekts für SQL-VARA-Objekte ist auch im Benutzerobjekt (Standard-Login) möglich, siehe Benutzer (USER).
Aktivieren Sie die Option Benutzer-Login bevorzugen, um das Login-Objekt anzuwenden, das dem aktuellen Benutzer zugeordnet ist. Dadurch wird das im VARA-Objekt angegebene Login-Objekt ignoriert.
Ein Fehler tritt auf, wenn das VARA-Objekt gelöst werden soll und im Benutzerobjekt keine Anmeldung definiert ist.
PromptSet-Variablen können hier nicht verwendet werden.
-
SQL-Statement
SQL-Statements zur Auswahl von Einträgen der Datenbank, welche als Variablenwerte zurückgeliefert werden sollen.
Variablen, die im SQL direkt angegeben werden, werden nicht ersetzt. Um Variablen einzubinden, verwenden Sie die Bind-Parameter.
Maximale Länge: 4096 Zeichen
Mit Bind-Parametern fügen Sie Variablenwerte in SQL-Statements ein. Dabei können Script-Variablen, Objektvariablen, vordefinierte Variablen und Platzhalter für VARA-Objekte verwendet werden, die Sie in diese Tabelle eintragen. Jede Zeile repräsentiert einen Bind-Parameter. Sie können neben Variablennamen für Bind-Parameter auch beliebige Werte angeben.
Unterstützte Datentypen und Eingabeformate:
- Datum: yyyy-mm-dd
- Zeit: hh:mm:ss
- Zeitstempel: yyyy-mm-dd hh:mm:ss
- String: beliebige Zeichenfolge
- Boolean: Mögliche Werte: 0 / 1 oder true / false
- Zahl: Kein Tausender-Trennzeichen, Punkt als Dezimaltrennzeichen
Andere Feldtypen der Datenbank und andere Formate werden nicht unterstützt. Es erfolgt auch keine Umwandlung von Datentypen (z. B.: von Zeitstempel auf Datum). Wird ein ungültiger Wert eingefügt, kommt es zum Fehler beim Ausführen der SQL-Kommandos.
Wichtig!
- Existiert eine angegebene Variable nicht, so kann keine Wertersetzung durchgeführt werden. In diesem Fall wird der Variablenname übernommen. Dies kann zu Fehlern bei der Variablenauflösung führen.
- Eine Einschränkung durch die Variable VAR_SECURITY_LEVEL (UC_SYSTEM_SETTINGS) ist dabei nicht gegeben.
- In den SQL-Statements ist an jeder Stelle, an der der Wert eines Bind-Parameters eingefügt werden soll, das Zeichen „?“ anzugeben. Für jedes „?“ muss ein Bind-Parameter existieren. Dabei muss auf die richtige Reihenfolge (Tabelle) geachtet werden. Die mehrfache Verwendung von Bind-Parametern ist nicht möglich!
Um ein Kommando auszuführen, wählen Sie dieses aus und klicken Sie auf Vorschau. Die Statements werden ausgeführt und die jeweiligen Ergebnisse angezeigt. Die Vorschaufunktion dient der Überprüfung auf mögliche Fehler in den Datenbank-Statements (z. B. ob der Datentyp des VARA-Objekts und der Datenbank nicht übereinstimmen).
Der Datenbank-Agent sendet die Vorschau-Daten in Form einer Nachricht an die Automation Engine. Wenn diese Nachricht die maximale Nachrichtenlänge überschreitet, die ein Serverprozess akzeptiert, tritt ein Fehler auf.
Maximale Länge: Im Parameter „MaxMsgSize= parameter“ der Datei Automation Engine UCSRV.INI festgelegt.
Standardwert: 3145 728 Bytes.
Siehe auch: