2012-12-14 8 views
8

odbc isql był w stanie połączyć się ze źródłem danych:ODBC w stanie połączyć się ze źródłem danych MSSQL na OS X Lion

$ isql SMS_GTWY username password -v 

Powroty:

[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 

podczas tsql jest OK:

$ tsql -S SERVER001 -U username -P password 

zwraca:

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 

freetdsunixODBC są i zainstalować przez siebie brew.

Mam podobną konfigurację na CentOS i odbk isql do mssqlserver działa dobrze. Jest to zauważalne różnice, nie zobaczyć libtdsS.so zainstalowany na OS X.

# cat /etc/odbcinst.ini na CentOS:

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

Czy to jest przyczyna problemu?

p.s. $ odbcinst -j powraca:

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

[freetds] 

$ odbcinst -q -s Powroty:

[SMS_GTWY] 

Odpowiedz

8

isql prace po ponownej instalacji unixodbc i freetds (--with-unixodbc):

brew uninstall freetds 
brew uninstall unixodbc 

brew install unixodbc 
brew install freetds --with-unixodbc 

Teraz $ isql -v SMS_GTWY username password powraca:

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

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

+0

Jesteś geniuszem! To uratowało mój bekon podczas próby wykonania tych innych użytecznych instrukcji. - http://www.acloudtree.com/how-to-install-freetds-and-unixodbc-on-osx-using-homebrew-for-use-with-ruby-php-and-perl/ –

+0

Dziękuję. Też miałem te problemy. Ponowna instalacja – Greg

2

Ok. Zmarnowałem również dwa dni, ale nie chciałem używać Homebrew ani MacPorts. Sztuką jest zbudowanie FreeTDS za pomocą przełącznika unixODBC. Generuje to sterownik odbc (xxx.so), który nie jest generowany w inny sposób. Aby rozpocząć, będziesz potrzebował XCode i już zainstalowanych narzędzi wiersza poleceń. Mnóstwo zasobów w sieci, aby pokazać, jak to zrobić.

Oto kroki, które podjąłem.

  1. Pobierz Latest Stable FreeTDS
  2. Pobierz Latest Stable unixODBC
  3. Rozpakuj oba.
  4. Zwróć uwagę na pełną ścieżkę do rozpakowanego katalogu uniksodBC.
  5. Z wiersza polecenia terminala przejdź do katalogu FreeTDS i wprowadź następujące polecenia.

    ./configure --with-unixodbc =zauważyć ścieżka w kroku 4
    zrobić
    sudo make install

Po zakończeniu wszystko powinno być w/usr/local /. Twój sterownik powinien znajdować się w katalogu/usr/local/lib. Edytuj pliki ustawień w/usr/local/etc. Mam nadzieję że to pomoże.

0

Dla każdego, kto wykorzystać MacPort, jedyna inna część z wyżej instaluje FreeTDS ten sposób:

sudo port install freetds +mssql +odbc +universal 

i biblioteka kierowca będzie tutaj:

/opt/local/lib/libtdsodbc.so 
Powiązane problemy