2012-01-19 11 views
7

sto usando sqsh (versione 2.1) su Ubuntu 10.04 per connettersi a un database MSSQL utilizzando un comando come questo:query SELECT su una tabella con uno spazio nel nome utilizzando sqsh

sqsh -S server -U user -P password -D database 

Ho un tabella denominata My Table, ma non riesco a trovare un modo per eseguire una query SELECT su di esso. Questo è quello che ho provato fino ad ora:

SELECT * FROM 'My Table' 
go 

Uscita: sintassi errata vicino a "La mia tabella". (Ho la stessa cosa per le doppie virgolette)

\set t="My Table" 
SELECT * FROM $t 
go 

uscita: nome oggetto non valido 'mio'. (Il che è strano perché se lo faccio \ echo $ t, ottengo il nome completo tavolo)

SELECT * FROM My\\ Table 
go 

uscita: nome oggetto non valido 'mio'.

SELECT * FROM [My Table] 
go 

in uscita: i dati Unicode in un solo Unicode regole di confronto o di dati ntext non possono essere inviati ai clienti utilizzando DB-Library (come ISQL) o ODBC versione 3.7 o precedenti.

Quest'ultimo comando funziona correttamente per i nomi di tabella senza spazi.

AGGIORNAMENTO: altri comandi funzionano bene, ad es. Posso ottenere la descrizione della tabella con:

SELECT column_name,data_type FROM information_schema.columns WHERE table_name = 'My Table' 
go 
+0

Stai usando Sybase e si dispone di un tavolo con gli spazi sul nome? –

+1

No, è un database MSSQL. Spiacente, forse i tag erano fuorvianti. – jackocnr

+0

Puoi verificare cosa succede se rimuovi lo spazio dal nome della tabella? –

risposta

2

Trovato infine the solution. Ho dovuto aggiungere i seguenti 2 righe per /etc/freetds/freetds.conf

tds version = 8.0 
client charset = UTF-8 
8

Mettere il nome della tabella tra virgolette non funziona in MS SQL Server.
Il modo corretto sta usando [ ]:

SELECT * FROM [My Table] 
+0

Grazie, ma come ho detto nella domanda, questo non ha funzionato per me. Mi mancavano alcune impostazioni di configurazione (vedi la mia risposta), e una volta avute quelle, la query SELECT ha funzionato con virgolette o parentesi quadre. – jackocnr

2

Im utilizzando SQL 2008R2, e le seguenti opere per me

['table name'] 
Problemi correlati