2012-12-14 8 views
8

odbc isql nicht in der Lage war zu Datenquelle verbinden:odbc keine Verbindung zu MSSQL-Datenquelle auf OS X Lion

$ isql SMS_GTWY username password -v 

kehrt:

[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 

während tsql ist ok:

$ tsql -S SERVER001 -U username -P password 

Rücksendungen:

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 und unixODBC installieren sind nach Hause brew.

Ich habe ein ähnliches Setup auf CentOS und Odbc Isql zu Mssqlserver funktioniert gut. Es gibt einen spürbaren Unterschied, ich sehe nicht ein libtdsS.so auf OS X installiert

# cat /etc/odbcinst.ini auf CentOS:

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

Ist das die Ursache des Problems?

p.s. $ odbcinst -j kehrt:

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 kehrt:

[freetds] 

$ odbcinst -q -s kehrt:

[SMS_GTWY] 

Antwort

8

isql Arbeiten nach Neuinstallation unixodbc und freetds (--with-unixodbc):

Jetzt
brew uninstall freetds 
brew uninstall unixodbc 

brew install unixodbc 
brew install freetds --with-unixodbc 

, $ isql -v SMS_GTWY username password kehrt:

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

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

+0

Du bist ein Genie! Dies rettete meinen Speck, während ich versuchte, diesen sonst nützlichen Anweisungen zu folgen. - http://www.acloudtree.com/how-to-install-freetds-and-unixodbc-on-osx-using-homebrew-for-use-with-ruby-php-and-perl/ –

+0

Vielen Dank. Ich hatte auch diese Probleme. Neuinstallation – Greg

2

Ok. Ich habe auch zwei Tage damit verschwendet, wollte aber nicht Homebrew oder MacPorts verwenden. Der Trick besteht darin, FreeTDS mit dem unixODBC-Switch zu erstellen. Dies erzeugt den odbc-Treiber (xxx.so), der sonst nicht erzeugt wird. Zu Beginn benötigen Sie XCode und die Befehlszeilenprogramme bereits installiert. Viele Ressourcen im Web zeigen, wie das geht.

Hier sind die Schritte, die ich gemacht habe.

  1. Herunterladen Latest Stable FreeTDS
  2. Herunterladen Latest Stable unixODBC
  3. beide auspacken.
  4. Beachten Sie den vollständigen Pfad zum entpackten unixODBC-Verzeichnis.
  5. Von einer Terminal-Eingabeaufforderung aus navigieren Sie zum FreeTDS-Verzeichnis und geben Sie die folgenden Befehle ein.

    configure --with-unixodbc =bemerkt Pfad in Schritt 4
    machen
    sudo make install

Wenn Sie fertig sind, alles in/usr/local/sein sollte. Ihr Treiber sollte sich in/usr/local/lib befinden. Bearbeiten Sie Ihre Einstellungsdateien in/usr/local/etc. Hoffe das hilft.

0

Für alle, die MacPort verwenden, die einzige andere Teil oberhalb von installiert FreeTDS auf diese Weise:

sudo port install freetds +mssql +odbc +universal 

und die Treiber-Bibliothek wird hier sein:

/opt/local/lib/libtdsodbc.so