2012-12-14 5 views
8

ODBC isql è stato in grado di connettersi a origine dati:ODBC in grado di connettersi a origine dati MSSQL su OS X Lion

$ isql SMS_GTWY username password -v 

rendimenti:

[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source 
[01000][unixODBC][FreeTDS][SQL Server]Unknown host machine name. 
[ISQL]ERROR: Could not SQLConnect 

mentre tsql è ok:

$ tsql -S SERVER001 -U username -P password 

resi:

locale is "C/UTF-8/C/C/C/C" 
locale charset is "UTF-8" 
using default charset "UTF8" 
1> 

$ cat ~/.freetds.conf:

[SERVER001] 
    host = 192.168.8.101 
    port = 1433 
    tds version = 8.0 
    client charset = UTF8 

$ cat ~/.odbc.ini:

[SMS_GTWY] 
    Description = SERVER001 Server 
    Driver  = freetds 
    Database = SMS_GTWY 
    ServerName = SERVER001 
    TDS_Version = 7.1 

$ cat ~/.odbcinst.ini:

[freetds] 
    Description = MS SQL database access with FreeTDS 
    Driver  = /usr/local/lib/libtdsodbc.so 
    Setup  = /usr/local/lib/libtdsodbc.so 
    UsageCount = 1 

freetds e unixODBC sono installare da casa brew.

Ho una configurazione simile su CentOS e odbc isql su mssqlserver funziona correttamente. V'è una notevole differenza, non vedo un libtdsS.so installato su OS X.

# cat /etc/odbcinst.ini su CentOS:

[freetds] 
Description = MS SQL database access with FreeTDS 
Driver  = /usr/lib/libtdsodbc.so 
Setup  = /usr/lib/libtdsS.so 
UsageCount = 1 

è che la causa del problema?

p.s. $ odbcinst -j restituisce:

unixODBC 2.3.1 
DRIVERS............: /usr/local/Cellar/unixodbc/2.3.1/etc/odbcinst.ini 
SYSTEM DATA SOURCES: /usr/local/Cellar/unixodbc/2.3.1/etc/odbc.ini 
FILE DATA SOURCES..: /usr/local/Cellar/unixodbc/2.3.1/etc/ODBCDataSources 
USER DATA SOURCES..: /Users/horace/.odbc.ini 
SQLULEN Size.......: 8 
SQLLEN Size........: 8 
SQLSETPOSIROW Size.: 8 

$ odbcinst -q -d restituisce:

[freetds] 

$ odbcinst -q -s restituisce:

[SMS_GTWY] 

risposta

8

isql opere dopo reinstallare unixodbc e freetds (--with-unixodbc):

brew uninstall freetds 
brew uninstall unixodbc 

brew install unixodbc 
brew install freetds --with-unixodbc 

Ora, $ isql -v SMS_GTWY username password rendimenti:

+---------------------------------------+ 
| Connected!       | 
|          | 
| sql-statement       | 
| help [tablename]      | 
| quit         | 
|          | 
+---------------------------------------+ 
SQL> 

credito: https://gist.github.com/565440

+0

Sei un genio! Questo mi ha salvato la pancetta mentre tentavo di seguire queste istruzioni altrimenti utili. - http://www.acloudtree.com/how-to-install-freetds-and-unixodbc-on-osx-using-homebrew-for-use-with-ruby-php-and-perl/ –

+0

Grazie. Ho anche avuto questo problema. Reinstallare – Greg

2

Ok. Ho sprecato anche due giorni su questo, ma non volevo usare Homebrew o MacPorts. Il trucco è creare FreeTDS con lo switch unixODBC. Questo genera il driver odbc (xxx.so) che non viene generato in altro modo. Per iniziare sono necessari XCode e gli strumenti della riga di comando già installati. Un sacco di risorse sul web per mostrare come farlo.

Ecco i passaggi che ho seguito.

  1. Scarica Latest Stable FreeTDS
  2. Scarica Latest Stable unixODBC
  3. Estrarre entrambi.
  4. Annotare il percorso completo della directory unixODBC decompressa.
  5. Da un prompt del terminale accedere alla directory FreeTDS ed emettere i seguenti comandi.

    ./configure --with-unixodbc =percorso annotato nel passaggio 4
    fanno
    sudo make install

Al termine, tutto dovrebbe essere in/usr/local /. Il tuo driver dovrebbe essere in/usr/local/lib. Modifica i tuoi file di impostazioni in/usr/local/etc. Spero che questo ti aiuti.

0

Per tutti coloro che utilizzano MacPort, l'unica parte diversa da FreeTDS sopra è l'installazione in questo modo:

sudo port install freetds +mssql +odbc +universal 

e la biblioteca driver sarà qui:

/opt/local/lib/libtdsodbc.so