2012-01-19 9 views
7

Używam SQSH (wersja 2.1) na Ubuntu 10.04, aby połączyć się z bazą danych MSSQL za pomocą polecenia tak:SELECT zapytania na stole z miejsca w nazwie używając SQSH

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

mam tabela o nazwie Moja tabela, ale nie mogę znaleźć na niej sposobu uruchomienia kwerendy SELECT. Oto, co próbowałem do tej pory:

SELECT * FROM 'My Table' 
go 

Wynik: Niepoprawna składnia w pobliżu "Mojej tabeli". (Otrzymuję to samo dla podwójnych cytatów)

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

Wynik: Niepoprawna nazwa obiektu "Mój". (Co jest dziwne, bo jeśli mam echo $ \ t, mam pełną nazwę tabeli)

SELECT * FROM My\\ Table 
go 

wyjściowa: Nieprawidłowa nazwa obiektu „My”.

SELECT * FROM [My Table] 
go 

wyjściowe: dane Unicode w Unicode tylko zestawień lub danych ntext nie mogą być wysyłane do klientów za pomocą DB-Library (takich jak ISQL) lub ODBC w wersji 3.7 lub starszej.

To ostatnie polecenie działa poprawnie w przypadku nazw tabel bez spacji.

AKTUALIZACJA: inne polecenia działają dobrze, np. Mogę uzyskać opis tabeli za pomocą:

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

Używasz Sybase i masz tabelę ze spacjami w nazwie? –

+1

Nie, to jest baza danych MSSQL. Przepraszamy, może tagi były mylące. – jackocnr

+0

Czy możesz sprawdzić, co się stanie, jeśli usuniesz spację z nazwy tabeli? –

Odpowiedz

2

Znaleziono ostatecznie the solution. Musiałem dodać następujące 2 linie do /etc/freetds/freetds.conf

tds version = 8.0 
client charset = UTF-8 
8

Umieszczenie nazwy tabeli w cudzysłowie nie działa w MS SQL Server.
Prawidłowy sposób korzysta [ ]:

SELECT * FROM [My Table] 
+0

Dzięki, ale jak powiedziałem w pytaniu, to nie zadziałało dla mnie. Brakowało mi niektórych ustawień konfiguracyjnych (zobacz moją odpowiedź), a gdy już je miałem, zapytanie SELECT działało z cudzysłowami lub nawiasami kwadratowymi. – jackocnr

2

Im pomocą SQL 2008R2 oraz następujące prace dla mnie

['table name'] 
Powiązane problemy