Avatar billede pablopablo Nybegynder
23. marts 2009 - 22:15 Der er 10 kommentarer

OSQL og æ, ø og å?

God aften.

Jeg eksekverer nogle forskellige SQL statements via C# og OSQL.exe på min DB. Det har altid virket meget fint, men nu er jeg løbet ind i nogle problemer.

Når jeg bruger OSQL til at insætte nogle rækker i min DB som indeholder danske tegn - æ, ø og å. Så vises de ikke korrekt, når de senere vises via mit C# program, de bliver altså ikke tolket/læst korrekt af OSQL.

Når jeg eksekvere den samme SQL via SSMSE 2005 så virker alt fint! Så det ER altså noget med OSQL.

Jeg har søgt, men kan ikke finde i noget i dokumentationen omkring dette? Fx. hvis man kunne angive en codepage eller lign. ved eksekveringen af OSQL.

Jeg håber meget I kender svaret :-)

Mvh. PabloPablo
Avatar billede arne_v Ekspert
23. marts 2009 - 22:34 #1
Prøv og lav en fil med SQL sætningerne i en Windows editor (notepad eller højere) og kør den med:

OSQL -E -i foobar.sql
Avatar billede pablopablo Nybegynder
23. marts 2009 - 22:48 #2
God aften Arne :-)

Jeg kan ikke lige få det til at spille...?
Mit statement ser pt. således ud:

OSQL.exe -U sa -P Kode -S Computernavn\Server -d Navn -E -i C:\procedures.sql

har også prøvet med:

OSQL.exe -E -U sa -P Kode -S Computernavn\Server -d Navn -i C:\procedures.sql

Men ingen af dem virker. Det skal naturligvis nævnes at det hele køres igennem noget C# kode, som replacer div. TAGs med de rigtige data.

Det statement som kan eksekveres men som senere generere div. ulæselige tegn ser således ud:

OSQL.exe -U sa -P Kode -S Computernavn\Server -d Navn -i C:\procedures.sql
Avatar billede arne_v Ekspert
23. marts 2009 - 23:13 #3
Du skal enten bruge -E eller -U & -P ikke begge.

Skriver du ud fra C# med Encoding.Default ?
Avatar billede arne_v Ekspert
23. marts 2009 - 23:14 #4
Hvis du allerede kører et C# program - hvorfor så kalde OSQL ? Du kan vel lige så nemt bare udføre kommandoerne fra dit program.
Avatar billede pablopablo Nybegynder
23. marts 2009 - 23:33 #5
Hej igen...

-E virker ikke.

Nej, det kan ikke gøres fra C# idet det er noget som kunden selv eksekvere via et opdateringsprogram...

Har du nogle andre ideer?
Avatar billede arne_v Ekspert
24. marts 2009 - 00:10 #6
Og Encoding ?
Avatar billede pablopablo Nybegynder
24. marts 2009 - 11:01 #7
God morgen Arne :)

Altså C# kalder / eksekvere blot en .bat fil på disken.
I .bat filen står så OSQL og div. parametre...så jeg påvirker vel ikke selv noget her via Encoding...?
Avatar billede pablopablo Nybegynder
24. marts 2009 - 11:42 #8
Har fundet denne anden tråd: http://www.eksperten.dk/spm/324316
Og det ser heller ikke ud til, at de har fundet noget svar ved brug af OSQL - kun alternativer.

Jeg skal bruge en løsning med OSQL, idet det er det kundens program benytter.
Avatar billede arne_v Ekspert
25. marts 2009 - 02:21 #9
Du skriver ikke C:\procedures.sqli dit C# program ?
Avatar billede pablopablo Nybegynder
25. marts 2009 - 12:25 #10
Nej. Det er et opdateringsprogram som indlæser i række filer.
Det indlæse og kopiere bla. procedures.sql filen til c: og derefter bruges OSQL til at eksekvere filen...men nej, opdateringsprogrammet læser ikke konkret noget SQL kode eller lign. det ligger allerede i en fil som blot kopieres til c-drevet.

Kan godt se nu, at opdateringsprogrammet skulle være lavet anderledes for at virke bedre, men det har jeg ikke mulighed for at rette i nu...så derfor håbede jeg på at man kunne ændre i codepagen eller lign. via in-parametre ved brug af OSQL.
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