none
ターゲットCPUが"x86"だとコネクトできません RRS feed

  • 質問

  • Windows7 64bitでVisiarStudio2010のVBで開発をしております。
    プログラム中からSQLサーバ2008R2にコネクトをする場合、ターゲットCPUが"x86"だと"タイムアウトに達しました。操作が完了する前にタイムアウト期間が過ぎたか、またはサーバーが応答していません。"とメッセージが出ます。
    ターゲットCPUがAnyCPUの場合はコネクトができます。
    x86の場合、なぜコネクトができないのでしょうか。

    2011年11月29日 4:21

回答

  • データベース接続に ODBC や OLEDB を使用されていますか?Windows7 に限らないことなのですが、ODBC の設定ファイルは x86 と x64 で違う場所にありますので、ODBC の設定ファイルが x64 用しか作成されていないのが原因ではないでしょうか?

    AnyCPU で作成している場合、Windows が x64 の場合は x64 で起動し、Windows が x86 であれば x86 で起動します。このため、x86 を指定された場合に x86 版の ODBC の設定ファイルを参照してエラーになっているのではないか?と思います。(x64 の場合、コントロールパネルに、ODBC の設定が2種類あるはずです)

    他にもいくつか原因は考えられますので、これはあくまで原因の1例ということで、もう少し詳しく環境等を書かれないとあまり良いアドバイスは得られないと思います。

     

    • 回答としてマーク 山本春海 2011年12月7日 8:28
    2011年11月29日 4:45

すべての返信

  • データベース接続に ODBC や OLEDB を使用されていますか?Windows7 に限らないことなのですが、ODBC の設定ファイルは x86 と x64 で違う場所にありますので、ODBC の設定ファイルが x64 用しか作成されていないのが原因ではないでしょうか?

    AnyCPU で作成している場合、Windows が x64 の場合は x64 で起動し、Windows が x86 であれば x86 で起動します。このため、x86 を指定された場合に x86 版の ODBC の設定ファイルを参照してエラーになっているのではないか?と思います。(x64 の場合、コントロールパネルに、ODBC の設定が2種類あるはずです)

    他にもいくつか原因は考えられますので、これはあくまで原因の1例ということで、もう少し詳しく環境等を書かれないとあまり良いアドバイスは得られないと思います。

     

    • 回答としてマーク 山本春海 2011年12月7日 8:28
    2011年11月29日 4:45
  • K.Takaoka様

    ご返答ありがとうございました。

    ご指摘の通り、データベースへの接続にODBCを使っておりました。が、"スタートメニュー¥コントロールパネル¥管理ツール"と開いていくと"データソース(ODBC)"一つしか表示してくれていなかったのですね。2つあるとは思ってもいませんでした。

    http://support.microsoft.com/kb/942976/ja を参考にx86に対応するファイルを開き、設定をすることで、x86でもコネクトできるようになりました。

    本当にありがとうございました。助かりました。

     

    2011年11月29日 5:33