Ubuntu 16.04を実行しているリモートマシンからpyodbc
を使用してMS SQL Serverに接続しようとしています。
import pyodbc
conn = pyodbc.connect(r'DRIVER=ODBC Driver 17 for SQL Server; SERVER=xxxTest-SRV; PORT=51333; DATABASE=TestDB; UID=xxxx; PWD=xxxx;')
次のエラーが発生します。
pyodbc.OperationalError:( 'HYT00'、 '[HYT00] [unixODBC] [Microsoft] [ODBC Driver 17 for SQL Server] Login timeout expired(0)(SQLDriverConnect)')
サーバーIP
を接続文字列で使用しようとしましたが、まだうまくいきませんでした。
ただし、ターミナルからsqlcmd
を使用して接続できます
次の作品:
sqlcmd -S xxxTest-SRV, 51333 -d TestDB -U xxxx -P xxxx
私の問題に答えるような問題は見つかりませんでした。
odbcinst.ini
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/Microsoft/msodbcsql/lib64/libmsodbcsql-17.1.so.1.1
UsageCount=1
Linuxマシンからpyodbc
を使用してMS SQL Serverに接続すると問題が常に発生するようです。 PythonからSQL Serverに接続する方法はありますか?このエラーの解決にご協力いただければ幸いです。ありがとうございました。
[UPDATE]
以下の回答に従って、接続文字列を更新しました。しかし、今私は次のエラーを受け取ります:
pyodbc.Error:( '01000'、 "[01000] [unixODBC] [Driver Manager] Ca n't open lib '/opt/Microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1':file not found(0) (SQLDriverConnect) ")
私のodbcinst.iniファイルドライバ定義:
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/Microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1
UsageCount=1
LinuxマシンからMS SQL Serverに接続することは、常に悪夢のようでした。どのpyodbc
、unixODBC
、Driver
バージョンが最も安定しているか教えていただけますか?
this Microsoftの指示に従ってドライバをインストールしました。私のpyodbc
バージョンは4.0.23
MicrosoftのODBC SQL Server用のドライバーは、PORT=
パラメーターを使用しません。ポート番号がある場合、サーバー名/ IPにコンマを付けて、たとえば、
SERVER=xxxTest-SRV,51333;
私は同じ種類の問題に遭遇しましたが、私のシナリオは、PyOdbcモジュールを使用してAWS Lambda関数を介してec2インスタンスでホストされているSQLサーバーに接続しています。私にとって、ホスト名をec2インスタンスのIPアドレスに置き換えると修正されました。
DNSを解決できないことがわかりました。上記の手順のいずれかがうまくいかなかった場合は、IPアドレスを使用してみて、ここにコメントしてください