Sto provando a connettermi a un server Microsoft SQL dalla macchina di sviluppo Mac usando iODBC. Non importa cosa faccio, ricevo il messaggio di errore Unable to connect to data source
dal driver FreeTDS. Dopo aver consultato vari manuali, post di blog e domande StackOverflow, sono alla fine del mio spirito.Connessione a MS SQL Server con iODBC su Mac
Sto usando Mac OS X 10.7.4, con la versione 0.91 di FreeTDS installata tramite Homebrew. Ecco quello che sto facendo:
$ brew install freetds
$ mkvirtualenv odbc
$ workon odbc
$ pip install pyodbc
$ tsql -H localhost -U mydbusername -P mydbpassword -p 1433
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> quit
I collega di cui sopra e le opere, ma:
$ iodbctest
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0607.1008
Enter ODBC connect string (? shows list): driver={TDS};server=localhost;uid=mydbusername;pwd=mydbpassword;database=mydbname
1: SQLDriverConnect = [FreeTDS][SQL Server]Unable to connect to data source (0) SQLSTATE=08001
1: ODBC_Connect = [FreeTDS][SQL Server]Unable to connect to data source (0) SQLSTATE=08001
Dal momento che sto in ultima analisi, la pianificazione di usarlo attraverso pyodbc, ho provato così:
$ python
Python 2.7.3 (default, Jun 22 2012, 00:35:38)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyodbc
>>> c = pyodbc.connect(driver='/usr/local/lib/libtdsodbc.so', host='localhost', name='mydbname', uid='mydbusername', pwd='mydbpassword')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
pyodbc.Error: ('08001', '[08001] [FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)')
Ho provato tutti i tipi di cose suggerite nei post di blog e post SO ... creando DSN in Amministratore ODBC, creando un ~/.odbc.ini
, tentando di usare unixODBC (che non funzionava con PyODBC), specificando un stringa di connessione invece di parole chiave args, ecc. Ho anche prodotto un file di traccia tramite iODBC, che ho incollato here, ma non ho potuto raccogliere più informazioni da esso che dal messaggio di errore.
(Devo dire che io sono il tunneling della connessione a SQL Server su SSH con la linea LocalForward localhost:1433 production.someinstitution.edu:1433
nel mio ~/.ssh/config
, dato che il mio reparto IT mi ha limitato per collegare solo dal IP del server di produzione. Si lavora per un client GUI (SQuirreLSQL) quindi presumo che l'inoltro sia corretto.)
Hai specificato porto di stringa di connessione pyodbc? – sunprophit
I ** sapeva ** doveva essere qualcosa di semplice che mi mancava! Grazie mille sole. Notato per riferimento futuro: FreeTDS (o iODBC?) Non ha un concetto di porta "predefinita" per un driver. – josePhoenix
@sunprophit: appena controllato, funziona perfettamente ora! Puoi pubblicarlo come risposta in modo che io possa votare/accettarlo? – josePhoenix