Optionen
string
erforderlich
Der Hostname oder die IP-Adresse des MSSQL-Servers.
string
erforderlich
Der Port des MSSQL-Servers.
string
erforderlich
Der Benutzername für die Anmeldung.
string
erforderlich
Das Passwort für die Anmeldung.
string
erforderlich
Der Name der Datenbank.
string
erforderlich
Das SQL-Statement, das ausgeführt werden soll. Werte aus den Argumenten
werden über die Platzhalter
?1 bis ?10 eingesetzt. Setzen Sie Platzhalter
nicht in Anführungszeichen.Platzhalter im SQL-Statement
Die Platzhalter?1 bis ?10 verweisen auf die Argumente argument1 bis argument10. Maßgeblich ist dabei die Nummer, nicht die Reihenfolge im Statement. Ein Platzhalter darf mehrfach vorkommen.
Die Werte werden als Parameter an die Datenbank übergeben und dort ausschließlich als Werte behandelt, nicht als Teil des Statements. Das verhindert SQL-Injection und macht ein eigenes Maskieren oder Quoten unnötig.
Daraus ergeben sich drei Regeln:
- Platzhalter stehen immer ohne Anführungszeichen im Statement:
WHERE kunde = ?1ist korrekt,WHERE kunde = '?1'nicht. - Platzhalter stehen nur für Werte. Datenbank-, Tabellen- und Spaltennamen müssen fest im Statement hinterlegt sein.
- Zusätzliche Zeichen wie Wildcards werden an den Platzhalter angehängt, statt in ihn hineingeschrieben zu werden.
Suche mit LIKE
Die Prozentzeichen gehören als eigenständiger Text in das Statement und werden mit dem Platzhalter verbunden:WHERE kunde LIKE CONCAT('%', ?1, '%'). Nicht verwendbar ist WHERE kunde LIKE '%?1%'.
Datums- und Zahlenwerte
Argumente werden immer als Text übergeben. Verwenden Sie für Datumswerte das Formatyyyy-mm-dd; SQL Server wandelt es beim Vergleich automatisch in einen Datumswert um:
>= für den Beginn und < für das Ende ab. Bei Spalten mit Uhrzeit fehlen sonst die Einträge des letzten Tages. Soll die Umwandlung ausdrücklich im Statement stehen, verwenden Sie CAST(?2 AS date).
Nicht gefüllte Argumente
Nicht gefüllte Argumente werden als leerer Text übergeben. Bei einer LIKE-Suche entsteht darausLIKE '%%', das alle Datensätze zurückgibt. Beschreiben Sie deshalb bei jedem Argument, welcher Wert und welches Format erwartet werden. argument1 ist ein Pflichtfeld: Ohne Wert führt der Konnektor die Abfrage nicht aus.
Argumente
string
erforderlich
Wert für den ersten Parameter im SQL-Statement.
string
Wert für den zweiten Parameter im SQL-Statement.
string
Wert für den dritten Parameter im SQL-Statement.
string
Wert für den vierten Parameter im SQL-Statement.
string
Wert für den fünften Parameter im SQL-Statement.
string
Wert für den sechsten Parameter im SQL-Statement.
string
Wert für den siebten Parameter im SQL-Statement.
string
Wert für den achten Parameter im SQL-Statement.
string
Wert für den neunten Parameter im SQL-Statement.
string
Wert für den zehnten Parameter im SQL-Statement.
Beispiel
Die folgende Abfrage sucht Verträge eines Kunden, deren Laufzeit in einem bestimmten Zeitraum endet. Der Kundenname wird als Teilbegriff gesucht, der Zeitraum über zwei Datumswerte eingegrenzt. Optionquery:
Muster, 2025-01-01 und 2025-07-01 führt die Datenbank die Abfrage so aus, als stünde dort kunde LIKE '%Muster%' und laufzeit_ende >= '2025-01-01' AND laufzeit_ende < '2025-07-01'.
Fehlerbehebung
Die Abfrage liefert keine Daten, obwohl sie direkt auf der Datenbank funktioniert
Die Abfrage liefert keine Daten, obwohl sie direkt auf der Datenbank funktioniert
Prüfen Sie, ob die Platzhalter in Anführungszeichen stehen.
'%?1%' wird
als fester Text ausgeführt und liefert deshalb ein leeres Ergebnis statt
eines Fehlers. Schreiben Sie stattdessen '%' + ?1 + '%'.Die Abfrage liefert alle Datensätze
Die Abfrage liefert alle Datensätze
Ein nicht gefülltes Argument wird als leerer Text übergeben. In einer
LIKE-Bedingung entsteht daraus
'%%', das auf alle Datensätze passt.
Beschreiben Sie das erwartete Format im Argument oder grenzen Sie die
Abfrage im Statement zusätzlich ein.Ein Datumsfilter greift nicht wie erwartet
Ein Datumsfilter greift nicht wie erwartet
Übergeben Sie Datumswerte im Format
yyyy-mm-dd. Bei Spalten mit Uhrzeit
grenzen Sie den Zeitraum mit >= und < ein, damit die Einträge des
letzten Tages enthalten sind.Die Antwort meldet, dass die Abfrage nicht ausgeführt werden konnte
Die Antwort meldet, dass die Abfrage nicht ausgeführt werden konnte
Kann das Statement nicht ausgeführt werden, meldet der Konnektor dies als
fehlgeschlagene Abfrage und gibt die Meldung der Datenbank weiter; sie wird
zusätzlich im Systemprotokoll erfasst. Eine solche Meldung bedeutet nicht,
dass keine passenden Daten vorhanden sind. Prüfen Sie das Statement direkt
auf der Datenbank und ersetzen Sie die Platzhalter dort testweise durch
feste Werte.
