\

C# 指定された DSN には、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています。の対処方法

.Net Framework 3.5 で開発したアプリケーションを Windows 10 64 bit で
実行し、ODBC(32bit)でデータベースアクセスしようとしたときに発生しました。

原因としては、アプリケーションの実行が64bitであるにも関わらず、
ODBCが32bitのため、このエラーメッセージが発生しました。

・アプリケーション:64bit
・OS:64bit
・ODBCドライバ:32bit

こんな状態です。アプリケーションとODBCドライバのアーキテクチャ(bit数)を
一緒にする必要があるようです。

対策は、32bitアプリケーションとして実行するように、ビルドオプションを変更しました。

プラットフォームターゲットが
・Any CPU の場合、OSのアーキテクチャによって32bitや64bitに変更されます。
・x86 の場合、OSのアーキテクチャによらず、32bitで実行されます。
・x64 の場合、OSのアーキテクチャによらず、64bitで実行されます。

ちなみに、実行時のbit数が32bitか64bitかを取得するソースを紹介します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/// <summary>
/// 実行時のアーキテクチャが32Bitか64Bitかを判断する
/// </summary>
/// <param name="processBit"></param>
/// <returns></returns>
public static int GetRunningArch(out string processBit)
{
processBit = "";

try
{
if (IntPtr.Size == 4) processBit = "32bit";
else processBit = "64bit";

return UEReturnCode.Normal;
}
catch
{
return UEReturnCode.Error;
}

}

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱