Avatar billede raos Nybegynder
23. april 2001 - 11:06 Der er 10 kommentarer og
1 løsning

sql queries fra en dospromt

Jeg skal køre noget sql fra en .sql fil på en database fra en vb komponent.
Et eksempel på indholdet at filen kunne være:
\"UPDATE users SET navn = \'peter\'\"
altså meget simpel SQL.

Men mit problem ligger i at jeg skal have at vide om det det gik godt eller skidt. F.eks. skal jeg vide at et eller andet gik galt hvis der f.eks. ikke var en tabel der hed \"users\" - altså bare en bit/boolean der fortalte om det gik godt.

Til at køre SQL\'en bruger jeg osql,isql eller isqlw. Denne køres med de relavente patametre via metoden \"ShellAndWait\" (se her: http://www.ieighty.net/~davepamn/Starting_Threads.htm) - og den virker upåklageligt til alle de andre formål jeg har.

Jeg har prøvet at tilføje osql in \"-b\" parameter - som skulle sætte DOS ERRORLEVEL til 1 hvis noget gik galt. Men fejlen med at tabellen ikke findes er ikke grel nok til at DOS ERRORLEVET bliver ændret...

HJÆLP !!
Avatar billede slash Nybegynder
23. april 2001 - 11:16 #1
du kan vel prøve at skrive @@ERROR og @@ROWCOUNT ud... eller bruge RAISERROR når du koder dit SQL!
Avatar billede peter_m Nybegynder
23. april 2001 - 11:27 #2
Du kan som slash skrive ligge det i .sql fil.

for f.eks oracle vill man skrive

whenever sqlerror exit

update.....

Avatar billede raos Nybegynder
23. april 2001 - 11:31 #3
problemet er at jeg ikke har nogen indflydelse på hvordan sql\'en udformes
Avatar billede slash Nybegynder
24. april 2001 - 09:39 #4
så må du hellere få indflydelse på sql\'en... eller oxo må du jo konstatere at det ikke er dit problem!
Avatar billede peter_m Nybegynder
24. april 2001 - 09:41 #5
Du kan så manipulere din sql med at du for evt. tilføjet mulighed for at lavet fejlkode.

altså indlæse den sql du for lave noget + streng på den og spyt den så ud igen.
Avatar billede raos Nybegynder
24. april 2001 - 18:44 #6
ok jeg har løst det ved denne bat fil:
rem Run SQL script and write ERRORLEVEL to file
rem
rem %1 = server
rem %2 = user
rem %3 = password
rem %4 = database
rem %5 = sql file
rem %6 = output file
rem %7 = sql error file


osql -S %1 -U %2 -P %3 -d %4 -i %5 -b -o %6

if errorlevel=1 echo fejl > %7

Problemet er bare at når jeg bruge osql istedet for isqlw kan den ikke håndtere danske tegn.

F.eks. bliver \'Søren\' i dette eksempel:

INSERT INTO Users (navn) VALUES (\'Søren\')

til:  \'S°ren\'

Denne fejl får jeg ikke når jeg bruger isqlw - men den giver ikke mulighed for \'-b\' parameteren der sætter DOS ERRORLEVEL

Hjælp igen...
Avatar billede slash Nybegynder
24. april 2001 - 19:02 #7
hvilken version af SQL-server bruger du egentlig?
Avatar billede raos Nybegynder
24. april 2001 - 19:04 #8
2000
Avatar billede slash Nybegynder
24. april 2001 - 19:08 #9
hvis du connecter med osql fra f.eks. din maskine til en sql-server et givent sted i DK, så bruger den så vidt jeg ved din ODBC! Kan denne ikke sættes lidt anderledes op?

Det er sgu noget misk mask når disse fejl kommer... det kan være så meget og der kan være mange løsningsmuligheder - dog er det ikke så let, når man ikke selv sidder med svineriet!

hvordan er sql-serveren sat op.... hvilken collation bruger den etc.
Avatar billede slash Nybegynder
01. maj 2001 - 10:16 #10
er der sket noget banebrydende?
Avatar billede raos Nybegynder
08. maj 2001 - 08:28 #11
Jeg har nu løst problemet - ikke pænt men det virker....


public method:

    sCommand = \"isqlw\" & _
                \" -S \" & SqlServer & _
                \" -d \" & CurrentDatabase & _
                \" -U \" & SqlUsername & _
                \" -P \" & SqlPassword & _
                \" -i \" & sFileName & _
                \" -o \" & sSqlOutput
               
\'* brug ShellAndWait fra MSDN
ShellAndWait(sCommand, 0, lRet, \"\", \"c:\\\")

\'* løb igennem output filen og led efter fejl:

Set oTextStream = oFSO.OpenTextFile(sSqlOutput, 1)
bErrorFound = False
Do Until (oTextStream.AtEndOfStream Or ErrorFound = True)
      sLine = oTextStream.ReadLine
      If InStr(sLine, \"Server: Msg\") > 0 Then
                \'error occured in som sql
                bErrorFound = True
      End If
Loop
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

LINK Mobility

Support Specialist

Netcompany A/S

IT Consultant

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger elementleder til System sektionen i Hvidovre

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation