web-dev-qa-db-ja.com

Pyodbc:ログインタイムアウトエラー

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に接続することは、常に悪夢のようでした。どのpyodbcunixODBCDriverバージョンが最も安定しているか教えていただけますか?

this Microsoftの指示に従ってドライバをインストールしました。私のpyodbcバージョンは4.0.23

10

MicrosoftのODBC SQL Server用のドライバーは、PORT=パラメーターを使用しません。ポート番号がある場合、サーバー名/ IPにコンマを付けて、たとえば、

SERVER=xxxTest-SRV,51333;
7
Gord Thompson

私は同じ種類の問題に遭遇しましたが、私のシナリオは、PyOdbcモジュールを使用してAWS Lambda関数を介してec2インスタンスでホストされているSQLサーバーに接続しています。私にとって、ホスト名をec2インスタンスのIPアドレスに置き換えると修正されました。

DNSを解決できないことがわかりました。上記の手順のいずれかがうまくいかなかった場合は、IPアドレスを使用してみて、ここにコメントしてください

0
Vin Odh