SEC_SQLI-VARA-Objekte
SEC_SQLI- oder Secure SQL Internal VARA-Objekte beziehen Werte auf sichere Weise aus der Automation Engine-Datenbank. Der Unterschied zwischen SQLI- (SQL Internal) und SEC_SQLI-VARA-Objekten ist, dass SEC_SQLI-Variablen immer in SQL-Statements eingefügt werden können, unabhängig von der Einstellung VAR_SECURITY_LEVEL in der Variable UC_SYSTEM_SETTINGS - Systemweite Einstellungen. Um Variablen in das SQL einzubinden, sind sogenannte Bind-Parameter zu verwenden. Dabei ist es nicht möglich, SQL-Statements zusammenzusetzen, wodurch eine Gefährdung der Datenbank durch SQL-Injection ausgeschlossen wird.
Wie SQLI-VARA-Objekten werden Variablenwerte in SEC_SQLI direkt aus der Automation Engine-Datenbank bezogen. Ein Datenbank-Agent ist somit nicht erforderlich.
Aus technischen Gründen kann das System nicht prüfen, ob nur SELECT-Kommandos im SQL der Variable verwendet werden.
Dieses Thema beinhaltet Folgendes:
- Der Parameter SQLVAR_INTERNAL in der Variable UC_SYSTEM_SETTINGS - Systemweite Einstellungen ist auf „Ja“ gesetzt.
- Die maximale Anzahl der zurückgelieferten Zeilen ist in der Einstellung SQLVAR_MAX_ROWS in der Variable UC_SYSTEM_SETTINGS - Systemweite Einstellungen festgelegt.
- Ihr Benutzer muss über das Recht SQL-interne Variablen anlegen und ändern verfügen.
SEC_SQLI-VARA-Objekte definieren
Die Definition eines SEC_SQLI-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“
Bei der Verwendung von SEC_SQLI-VARA-Objekten ist Folgendes zu beachten:
-
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.
-
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.
-
Typ
Schreibgeschützt, immer SQL - intern.
-
SQL Server / Oracle / DB2 / PostgreSQL Statement
Statements zur Auswahl von Einträgen der Datenbank, welche als Variablenwerte zurückgeliefert werden sollen.
Sie haben dafür zwei Möglichkeiten:
- Geben Sie Ihr Statement in das Eingabefeld ein.
- Um einen Zelleneditor zu öffnen und Ihr SQL-Statement einzugeben, klicken Sie auf das Symbol, geben Sie das Statement ein und klicken Sie auf OK.
Maximale Länge: 4096 Zeichen.
Wichtig! Variablen, die im SQL direkt angegeben werden, werden nicht ersetzt. Um Variablen einzubinden, verwenden Sie die Bind-Parameter.
Sie fügen Variablenwerte innerhalb von SQL-Statements im Abschnitt Bind-Parameter ein. Sie können Variablennamen oder VARA-Objektnamen als Bind-Parameter mit beliebigen Werte angeben. Wenn eine Variable oder ein VARA-Objekt nicht vorhanden ist, werden keine Werte ersetzt, sondern derVariablen- oder VARA-Objektname wird verwendet. Dies kann zu einem Fehler führen, wenn die Variable oder das VARA-Objekt aufgelöst wird.
Sie können folgende Arten von Variablen und VARA-Objekten eingeben:
- Script-Variablen
- Objektvariablen
- Vordefinierte Variablen
- Vordefinierte und benutzerdefinierte VARA-Objekte
Jede Zeile in der Tabelle steht für einen Bind-Parameter.
Für Bind-Parameter werden folgende Feld-Datentypen und Eingabeformate unterstützt:
- 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
Wichtig!
- Es werden nur die zuvor aufgeführten Feldtypen und Formate 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.
- Eine Einschränkung durch die Variable VAR_SECURITY_LEVEL (UC_SYSTEM_SETTINGS - Systemweite Einstellungen) 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).
Beispiel:
Im Beispiel oben wird das folgende SQL-Statement in das Feld SQL Server Statement eingegeben. Der Wert der Bind-Variable ersetzt das Zeichen „?“.
select ah_name as ObjectName,ah_timestamp1 as ActivationTime,ah_timestamp2 as StartTime,ah_timestamp4 as EndTime from ah
where ah_client = ?
and ah_otype = ?
and ah_deleteflag = ?
and ah_hostdst = ?
order by ah_name asc
Siehe auch: