Von:
An:
Betreff:
Re: =?UTF-8?Q?Re: SQL-DB Lesen =c3=bcber ODBC-Treiber
Klicken sie auf ein Symbol um es in die Nachricht einzusetzen:
Text Optionen:
<pre> Text </pre>
<verbatim> Text </verbatim>
[img] Text [/img]
<nofooter>
[quote] --from Newsreader at Freitag, 16. Februar 2018; 16:11:39-- Moin, moin wie Matthias schon beschrieben hat : bei Verwendung von Variablen a la â=80=9C...where kuname = ?m.lckunameâ=80=9D kompiliert der Server die Abfrage und â=80=9Cmerktâ=80=9D sich Statistiken, etc. Bei Verwendung von Literalen macht er das nicht, waere ja auch nicht sinnvoll. Bei Literalen gewinnt der Server Zeit fuer die Abschaetzung (Festwert), verliert aber bei der Statistik und Kompilierung wieder welche. Testen kann man das nicht per Aufruf von Prozeduren, da gelten, vor allem bei lokalen Variablen, wieder andere Werte. Wir mischen das eher locker : Bei hauefig verwendeten Abfragen (FK zu Klartext) nehmen wir Variablen Bei selteneren , vor allem mit vielen Joins, bauen wir den Wert via Textmerge (nur f=C3=BCr numeric pks). Das liegt auch daran dass die SQL-Funktionen zum Update,.. in Funktionen gekapselt sind und diese dann die lokalen Werte der aufrufenden Funktion nicht kennen. cKurz = adrkurz(thisform.oadr.pk_adr) Func adrkurz(nfk) nnfkadr = nfk && private zwischenvariable, nfk ist in sqlwert() nicht bekannt return sqlwert(â=80=9CSelect kurzname from adr where pk_adr = ?m.nnfkadrâ=80=9D,â=80=9Dkurznameâ=80=9D, â=80=9CCUAâ=80=9D) * return sqlwert(â=80=9CSelect kurzname from adr where pk_adr = â=80=9C+Trans(m.nfk),â=80=9Dkurznameâ=80=9D, â=80=9CCUAâ=80=9D) && oder Textmerge endfu Bei Uebergabe als Parameter an ODBC ist eine sqlinjection soweit ich weiss nicht moeglich, bei Literalen schon. https://xkcd.com/327/ https://www.explainxkcd.com/wiki/index.php/Little_Bobby_Tables https://www.easysoft.com/developer/sql-injection.html Wir â=80=9Csanitizenâ=80=9D Felder die zur Suche verwendet werden k=C3=B6nnten (kein â=80=93, ; , kein drop , dele,... im Inhalt) nur zur Sicherheit. Die werden aber eh per variable abgefragt GUPTA scheint da noch anders zu agieren. Gruesse tkn P.S.: "Tom Knauf"
schrieb im Newsbeitrag news:741072... --from Newsreader at Donnerstag, 15. Februar 2018; 18:02:18-- http://db-berater.blogspot.de/2014/07/verwendung-von-variablen-statt-literalen.html "Hans-Peter Gr=C3=B6zinger" schrieb im Newsbeitrag news:741070... Hallo Matthias ! -------------------------------------------------------------------------- beim MS-SQLserver soll man mit Variablen arbeiten... Richtig, beim SQL Server soll man immer mit den ?-Variablen arbeiten, denn dann muss der SQL Server den SQL-Befehl nur einmalig kompilieren. Wird der gleiche SQL-Befehl (mit anderem Wert) erneut aufgerufen, kann er den bereits vorkompilierten SQL-Befehl wiederverwenden. -------------------------------------------------------------------------- Hast du da einen Link wo das gut beschrieben ist20 [/quote]