2012-08-15 25 views
9

iODBCを使用してMac開発マシンからMicrosoft SQL Serverに接続しようとしています。私が何をするにしても、FreeTDSドライバからエラーメッセージUnable to connect to data sourceが出ます。さまざまなマニュアル、ブログ記事、StackOverflowの質問を参考にして、私は気分がいい。MacでiODBCを使用してMS SQL Serverに接続する

私は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の投稿で提案されているすべての方法を試しました... ODBC AdministratorでDSNを作成し、~/.odbc.iniを作成し、unixODBC(PyODBCでは動作しませんでした)私はまた、hereを貼り付けたiODBCを介してトレースファイルを作成しましたが、エラーメッセージよりもそれ以上の情報を収集できませんでした。

(私はに私の~/.ssh/configでSSH経由でSQL Serverへの接続をトンネリングしようとしています。私のIT部門はプロダクションサーバのIPからの接続に制限しています。 SquirreLSQL)ので、転送が正しいと仮定します)。

+2

あなたはpyodbc接続文字列にポートを指定したことがありますか? – sunprophit

+0

私は**知っていた**それは私が行方不明だった単純なものでなければならなかった!そんなに太陽光線をありがとう。 将来の参照用:FreeTDS(またはiODBC?)には、ドライバの「デフォルト」ポートの概念はありません。 – josePhoenix

+0

@sunprophit:ちょうどチェックされ、今は完璧に動作しています!私はそれを投票することができるように答えとして投稿することができます/それを受け入れる? – josePhoenix

答えて

3

DSNなしの接続の場合は、接続文字列に 'port'パラメータを使用する必要があります。

そうでなければ、あなたのポートは(それぞれODBC.INIとfreetds.conf)あなたのDSNまたはドライバの設定で指定することができ

+1

これを見つけるのにずっと時間がかかる理由の一部は、正確なコードが私のサーバー上でFreeTDSを使ってUbuntuとunixODBCで働いたことでした。そこでは、ポート番号を省略しても問題は解決しません。 (もし私がこの質問とコメントに関連性​​のあるキーワードを十分に持っていれば、誰も私のように時間を無駄にしてくれるはずです) – josePhoenix

関連する問題