|
| MSSQL: Tabelnavn med $-tegn Fra : Troels Arvin |
Dato : 31-07-03 08:57 |
|
Hej,
Jeg sidder med en MS SQL Server 7 og har desværre bl.a. en tabel hvor der
i dets navn indgår et $-tegn, lad os sige, at tabellen hedder
"Foo Bar$Baz".
Hvordan arbejder jeg med tabellen, fx. fra osql?
Systemet brokker sig, hvis jeg prøver
SELECT * FROM "Foo Bar$Baz";
Jeg går ud fra, at $-tegnet skal escape's på særlig vis. Hvordan?
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Ukendt (31-07-2003)
| Kommentar Fra : Ukendt |
Dato : 31-07-03 10:32 |
|
"Troels Arvin" <troels@arvin.dk> skrev i en meddelelse
news:pan.2003.07.31.07.56.41.155286@arvin.dk...
> Hej,
>
> Jeg sidder med en MS SQL Server 7 og har desværre bl.a. en tabel hvor der
> i dets navn indgår et $-tegn, lad os sige, at tabellen hedder
> "Foo Bar$Baz".
>
> Hvordan arbejder jeg med tabellen, fx. fra osql?
>
> Systemet brokker sig, hvis jeg prøver
> SELECT * FROM "Foo Bar$Baz";
>
> Jeg går ud fra, at $-tegnet skal escape's på særlig vis. Hvordan?
Er der ikke noget om at der skal firkantede paranteser om når der er
mellemrum i navnet?
>
> --
> Greetings from Troels Arvin, Copenhagen, Denmark
>
| |
Peter Brodersen (31-07-2003)
| Kommentar Fra : Peter Brodersen |
Dato : 31-07-03 23:36 |
|
On Thu, 31 Jul 2003 09:56:41 +0200, Troels Arvin <troels@arvin.dk>
wrote:
>Systemet brokker sig, hvis jeg prøver
>SELECT * FROM "Foo Bar$Baz";
>
>Jeg går ud fra, at $-tegnet skal escape's på særlig vis. Hvordan?
Jeg prøvede lige at oprette en lignende tabel i MS Access, så mit svar
er udelukkende et gæt på baggrund af samme SQL-fortolkning.
SELECT * FROM `Foo Bar$Baz`;
virker uden problemer.
SELECT * FROM "Foo Bar$Baz";
giver, som du også oplever, brok.
--
- Peter Brodersen
Ugens sprogtip: kutyme (og ikke kotume)
| |
Troels Arvin (01-08-2003)
| Kommentar Fra : Troels Arvin |
Dato : 01-08-03 06:44 |
|
On Fri, 01 Aug 2003 00:36:11 +0200, Peter Brodersen wrote:
> Jeg prøvede lige at oprette en lignende tabel i MS Access, så mit svar
> er udelukkende et gæt på baggrund af samme SQL-fortolkning.
Jeg har faktisk set artikler på nettet rettet mod folk, der skal port'e
fra Access til MSSQL, hvor de nævner, at dette er et af de punkter, hvor
der er forskel mellem produkterne.
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Stig Johansen (01-08-2003)
| Kommentar Fra : Stig Johansen |
Dato : 01-08-03 02:20 |
|
Troels Arvin wrote:
> Hej,
>
> Jeg sidder med en MS SQL Server 7 og har desværre bl.a. en tabel hvor der
> i dets navn indgår et $-tegn, lad os sige, at tabellen hedder
> "Foo Bar$Baz".
Hmm. gad vide om der er Navision-DB?
>
> Hvordan arbejder jeg med tabellen, fx. fra osql?
>
> Systemet brokker sig, hvis jeg prøver
> SELECT * FROM "Foo Bar$Baz";
Ja det er standard...
> Jeg går ud fra, at $-tegnet skal escape's på særlig vis. Hvordan?
MS har valgt IKKE at følge standard som default - tsk.
Hvis du bruger MS's metode, skal du bruge SELECT * FROM [Foo Bar$Baz].
Hvis du ønsker at benytte standard SQL syntax, skal du kigge efter
quoted_identifier, der skal sættes til on (for osql parameter -I).
--
Med venlig hilsen
Stig Johansen
| |
Troels Arvin (01-08-2003)
| Kommentar Fra : Troels Arvin |
Dato : 01-08-03 06:42 |
|
On Fri, 01 Aug 2003 03:19:34 +0200, Stig Johansen wrote:
>> Jeg sidder med en MS SQL Server 7 og har desværre bl.a. en tabel hvor der
>> i dets navn indgår et $-tegn, lad os sige, at tabellen hedder
>> "Foo Bar$Baz".
>
> Hmm. gad vide om der er Navision-DB?
Ikke helt forkert.
> Hvis du bruger MS's metode, skal du bruge SELECT * FROM [Foo Bar$Baz].
Tak, det virker. Desværre dog ikke i sqsh[1].
1: http://www.sqsh.org/
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Stig Johansen (02-08-2003)
| Kommentar Fra : Stig Johansen |
Dato : 02-08-03 05:47 |
|
Troels Arvin wrote:
> On Fri, 01 Aug 2003 03:19:34 +0200, Stig Johansen wrote:
>> Hmm. gad vide om der er Navision-DB?
>
> Ikke helt forkert.
Hvis det er Navision-stat, så vær opmærksom på, at der kommer en del
database ændringer ved næste opgradering, herunder tvunget køb af MS
SQLServer 2K samt tilhørende klientlicenser.[2]
>> Hvis du bruger MS's metode, skal du bruge SELECT * FROM [Foo Bar$Baz].
>
> Tak, det virker. Desværre dog ikke i sqsh[1].
Jeg tog lige et kig på denne. Det kunne tyde på, at den opfatter $-tegnet
som et variabel prefix i dette tilfælde.
Har du prøvet denne sekvens:
set quoted_identifier on
SELECT * FROM "Foo Bar$Baz"
> 1: http://www.sqsh.org/
2: Jeg prøvede engang(dog ikke særlig hårdt) at få forbindelse til MS SQL 2K
fra min linux-dunk, men det lykkedes ikke umiddelbart. Det ser dog ud til
der er sket en del på FreeTDS siden da.
--
Med venlig hilsen
Stig Johansen
| |
Troels Arvin (05-08-2003)
| Kommentar Fra : Troels Arvin |
Dato : 05-08-03 12:16 |
|
On Sat, 02 Aug 2003 06:46:55 +0200, Stig Johansen wrote:
> Har du prøvet denne sekvens:
> set quoted_identifier on
> SELECT * FROM "Foo Bar$Baz"
Det fung'er desværre ikke: Invalid object name 'Foo Bar'.
> 2: Jeg prøvede engang(dog ikke særlig hårdt) at få forbindelse til
> MS SQL 2K fra min linux-dunk, men det lykkedes ikke umiddelbart. Det ser
> dog ud til der er sket en del på FreeTDS siden da.
Mht. MSSQL 2000 er det faktisk ret fint, efterhånden. Foruden FreeTDS har
man nemlig her hvad jeg tror er en fornuftig JDBC-driver fra Microsoft (ud
over den åbne, men vist nok knap så velfungerende jtds eller noget i den
stil). JDBC-driveren kan bl.a. bruges fra HenPlus, så man faktisk
efterhånden kan arbejde på acceptabel facon fra Linux (og sikkert andre
open source systemer):
http://henplus.sourceforge.net/
På paradoksal vis kan det fra en Linux-maskine derfor være betydeligt
lettere at tilslutte sig en ikke-lokal MSSQL2000-server end en ikke-lokal
DB2 eller Oracle. For sidstnævnte to systemer gælder nemlig, at man skal
igennem en super-lang download-tid og en mere (Oracle) eller mindre (DB2)
besværlig installation for blot at få klient-libraries på sin maskine.
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
|
|