2017-07-27 34 views
0

:私はWindows 7の64ビット版に私のコードを使用しています
32ビットpython(32ビットpython)は、Microsoftの64ビットODBCドライバで動作します。どうして?私が観察することができます

  • は(だけで、簡単な読み取り操作を ネットワーク上のSQL ServerとのODBC接続を確立する)のpython 3.6で書かれて あります。 2 32bit
  • 私はpyodbcをインストールしました。だから私はそれも32bitだと考えています。
  • マイクロソフトのウェブサイトから64ビットの「Microsoft®ODBC Driver 13.1 for SQLServer®」をダウンロードしてインストールしました。
  • 私のpythonコードは、server2003 32bitとSQL Server 2005(32bit)またはsql2008(32bit)のいずれかを実行するネットワーク上の 他のコンピュータに接続します。

セットアップが機能します。上記の設定は、SQL Serverネットワーク接続(32ビット)の設定が空であるsql2012(64ビット)を実行しているMicrosoft server2008(64ビット)を使用してコンピュータに正常に接続できることを示しています(meaing、 32ビットdllがありません)、デフォルトの64ビットネットワーク接続設定には、ipアドレスやリスニングポート情報などの通常の設定オプションが含まれています。

私自身の説明:
[1]、クライアントとサーバのOSやODBCインタフェースは、任意の32/64ビットの組み合わせであることができますが、私のコンピュータとSQLコンピュータ意志との間のネットワークを通して移動するプロトコル同一である。
[2] 32ビットPython + pyodbcは、64ビットDLLを使用する方法を知っているので、Microsoftの64ビットODBCドライバと通信できます。

答えて

1

32ビットアプリケーションは64ビットdllを呼び出せないので、Python 32ビットは64ビットドライバと確実に通信できません。 SQL Serverのための

msodbcドライバは、本質的にdllファイルです:msodbcsql13.dll

私はちょうど「SQL Serverの13.1のx64用のODBCは、」64ビットmsodbcsql13をインストールすること(でも、マイクロソフトで言及されていない)を発見します.dllとsystem32の32bit msodbcsql13.dll(64bit Windowsシステムの "system32"の32bitバージョン)

しかし、32bitクライアントと64bit SQLサーバとの間のネットワークプロトコルは、 64ビットのクライアントと同じ64ビットのSQL Serverと通信します。しかし、私は、クライアントからサーバーへの要求がネットワークに送られると、32ビットまたは64ビットはもはや重要ではないと考えています。誰かがこれにコメントしてください

+0

* "私は、クライアントからサーバーへの要求がネットワークに送られると、32ビットまたは64ビットはそれ以上重要ではないと信じています。 –

+0

@ GordThompsonありがとうございます。なぜなら、ODBC仕様はドライバ間で情報を交換するためのプロトコルをロックするからです。 32ビット/ 64ビットポインタの混乱のような問題がないように、またはintのような問題は32または64ビットになる可能性があります。サーバ上の64ビットODBCドライバは、32ビットODBCクライアントによってODBC言語が認識されます。ビットとは無関係に、COMオブジェクト、鉄被覆仕様にほぼ似ています。 – eliu

関連する問題