Ik heb enkele zeer grote en tijdrovende script. Als ik die via Delphi cq ADO verwerk, duurt dat ca. 20 minuten. (Lang leve ADO).
Daarom exporteer ik de scripts nu naar een temp.sql (kost 1,5 seconde) en verwerk het script middels osql.exe (ca 1 minuut). Resultaat 19 minuten winst.
Dit gaat goed, zolang er geen '!!' en 'go' staat aan het begin van regels. Voorbeeld:
levert in osql op:
Terwijl het resultaat in isql (tekstmode) is:
In grafische mode blijkt zelfs alles in 1 veld te staan met CRLF's erin.
Bovenstaande was maar een voorbeeld, de praktijk is dat er SP's worden aangeroepen met een zeer lange multi-regel tekst eraan vast.
Hoe kan ik de !! escapen zonder dat de inhoud van het veld veranderd?
Daarom exporteer ik de scripts nu naar een temp.sql (kost 1,5 seconde) en verwerk het script middels osql.exe (ca 1 minuut). Resultaat 19 minuten winst.
Dit gaat goed, zolang er geen '!!' en 'go' staat aan het begin van regels. Voorbeeld:
SQL:
1
2
3
| SELECT 'Deze regel bevat 2 ''uitroeptekens'': !! Met daarachter nog wat tekst. En die 2 worden in isql wel getoond, en in osql leveren ze een error op.' |
levert in osql op:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| osql -E -S <server> -d <db> -i temp.sql
1> 2> Met wordt niet herkend als een interne
of externe opdracht, programma of batchbestand.
3> 4>
-------------------------------------------------------------------------------
------------------------------
Deze regel bevat 2 'uitroeptekens':
En die 2 worden in isql wel getoond, en in
osql leveren ze een error op.
(1 row affected) |
Terwijl het resultaat in isql (tekstmode) is:
code:
1
2
3
4
5
6
| ----------------------------------------------------------------------------------------------------------------------------------------------- Deze regel bevat 2 'uitroeptekens': !! Met daarachter nog wat tekst. En die 2 worden in isql wel getoond, en in osql leveren ze een error op. (1 row(s) affected) |
In grafische mode blijkt zelfs alles in 1 veld te staan met CRLF's erin.
Bovenstaande was maar een voorbeeld, de praktijk is dat er SP's worden aangeroepen met een zeer lange multi-regel tekst eraan vast.
Hoe kan ik de !! escapen zonder dat de inhoud van het veld veranderd?