質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

18856閲覧

32bitアプリから64bitDBへのODBC接続

kutsulog

総合スコア985

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2016/12/02 08:09

編集2016/12/02 10:32

業務で32bit(x86)で作ったアプリのWindows7 64bit対応をしています
ODBCでDB(Sybase 64bit)に接続しているのですが、
%windir%\SysWOW64のodbcad32.exeでODBCの接続テストは成功するのに
OdbcConnection.Open()で以下のようなエラーが発生して
DB接続に失敗しています。

ERROR [IM014] [Microsoft][ODBC Driver Manager] 指定された DSN には、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています

32bitアプリからODBCを介して64bitのDBにアクセスするにはどのようにしたらよいでしょうか?

環境
OS:Windows7Professional(64bit)
DB:Sybase(SQL Anywhere 17 64bit)
--追記--
言語:VB.Net(Visual Studio2008 Professional)
構成プラットフォーム:(誤)x86(32bit動作)->(正)AnyCPU(64bit動作)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tak1wa

2016/12/02 08:15

32bit(x86)で作ったアプリのWindows7 64bit対応、とのことですが、アプリケーション実行環境は32/ 64bitどちらですか。また実行時のEXEのプロセスは32 / 64 どっちのモードで動作してますか?Visual Studioのバージョンも教えてください。
kutsulog

2016/12/02 08:36

情報不足失礼しました。ここでは改行ができず見づらいので本文に追記しました。
kutsulog

2016/12/02 10:33

構成プラットフォームで認識に誤りがありました。大変失礼しました。
guest

回答2

0

自己解決

構成マネージャーでアプリケーションのモードを確認したところ
チェック対象のプロジェクトがx86なっておらずAnyCPUであったために
64bitでアプリケーションが動作していました。

指定DSNが64bitのODBCデータソースに登録されていないため
32bitのODBCのデータソースでドライバとDBの解決を行い
バージョン違いを引き起こしていたようです。

お騒がせいたしました。

投稿2016/12/02 10:31

kutsulog

総合スコア985

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

この一文を見落としてました。

%windir%\SysWOW64のodbcad32.exeでODBCの接続テストは成功するのに

以下の回答は質問者さんがやってることそのまんまでした。。。


業務で32bit(x86)で作ったアプリのWindows7 64bit対応をしています
・・・略・・・
32bitアプリからODBCを介して64bitのDBにアクセスするにはどのようにしたらよいでしょうか?

状況がよくわからないのですが・・・
アプリの64bit化ではなく Windows7(64bit)上で「32bit(x86)で作ったアプリ」を動かそうとしているのでしょうか?

であれば、アプリが32bitなのでODBCドライバーも32bitのものが必要です(32bitのものを使用します)。

32bitアプリから64bitのODBCドライバーは、メッセージのとおり「ドライバーとアプリケーションとのアーキテクチャの不一致」です。

OS(64bit)+アプリ(32bit)+ODBC(32bit) <--接続--> DBMS(64bit)

※「接続」のところはODBCプロトコルで処理されます。
※「ODBCプロトコル」で処理するためのODBCドライバーが 32bitアプリ用と64bitアプリ用それぞれあると考えてください。

投稿2016/12/02 08:17

編集2016/12/02 09:17
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kutsulog

2016/12/02 08:58

ご推察のとおり32bit(x86)アプリをWindows7(64bit)環境で動かそうとしてアプリの周辺を整えています (本当はAnyCPU構成で64bit動作できればいいのですが64bitインストーラの作成でつまずいているため32bitアプリを動かそうとしています) ODBCのドライバの不一致ということですが 32bit版のODBCデータソースアドミニストレーターで接続確認が取れているDSN名を指定しているのですが それでは確認が足りないのでしょうか?
Y.H.

2016/12/02 09:14

すみません。この一文見落としてました。 「%windir%\SysWOW64のodbcad32.exeでODBCの接続テストは成功するのに 」
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問