Подключение к MS SQL Server с iODBC на Mac
Я пытаюсь подключиться к Microsoft SQL Server с моего компьютера Mac, используя iODBC. Независимо от того, что я делаю, я получаю сообщение об ошибке Unable to connect to data source
из драйвера FreeTDS. Изучив различные руководства, посты в блогах и вопросы Stackru, я в своем уме.
Я использую Mac OS X 10.7.4 с FreeTDS версии 0.91, установленной через Homebrew. Вот что я делаю:
$ 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
Вышеуказанное подключается и работает, но:
$ 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
Так как в конечном итоге я планирую использовать его через PyODBC, я тоже попробовал это:
$ 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)')
Я испробовал всевозможные вещи, предложенные в сообщениях блога и SO... создание DSN в ODBC Administrator, создание ~/.odbc.ini
пытаясь использовать unixODBC (который не работал с PyODBC), указав строку соединения вместо ключевых слов и т. д. Я также создал файл трассировки через iODBC, который я вставил здесь, но я не смог собрать больше информации от этого, чем от сообщения об ошибке.
(Я должен отметить, что я туннелирую соединение с SQL Server через SSH со строкой LocalForward localhost:1433 production.someinstitution.edu:1433
в моем ~/.ssh/config
, поскольку мой ИТ-отдел ограничил меня подключением только с IP-адреса рабочего сервера. Это работает для клиента с графическим интерфейсом (SQuirreLSQL), поэтому я предполагаю, что пересылка правильная.)
1 ответ
Вы должны использовать параметр 'port' в строке подключения в случае подключения без DSN.
В противном случае ваш порт может быть указан в конфигурации DSN или драйвера (odbc.ini и freetds.conf соответственно)