首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VS2015 連接 Oracle 12c 失敗:32 位客戶端以 64 位模式運行

     編輯:程式設計綜合問答

VS2015 (64 位) 通過 SqlDataSource 連接 Oracle 12c (64 位) 報錯「32 位客戶端以 64 位模式運行」。根因:Visual Studio 進程為 32 位(即使安裝 64 位 VS,設計時進程仍是 32 位),需 32 位 Oracle Client。

解決方案

  1. 安裝 Oracle 11g 32 位 Client(Instant Client 或完整客戶端),配置 TNS_ADMIN 指向 tnsnames.ora。
  2. 在 VS「工具 → 選項 → 數據庫工具 → 數據連接」中,Oracle 數據提供程序選 Oracle Client (ODP.NET, Managed Driver) 或 .NET Framework Data Provider for Oracle,確保引用 32 位 DLL。
  3. 項目屬性 → Build → 取消勾選「Prefer 32-bit」(運行時用 64 位),但設計時仍需 32 位 Client。

為什麼不支援 Oracle 12c+?

  • VS 設計時組件(Server Explorer、DataSource 配置向導)基於舊版 ODP.NET,未更新適配 12c+ 的認證協議與數據類型。
  • 微軟建議:運行時用 Oracle.ManagedDataAccess.Core (NuGet),設計時降級用 11g Client 僅為元數據獲取。

最佳實踐

  • 開發機安裝 Oracle 11g 32 位 Instant Client (70MB) 僅供 VS 設計時使用。
  • 項目引用 Oracle.ManagedDataAccess (4.x) 或 Oracle.ManagedDataAccess.Core (3.x+),運行時無需安裝 Client,支援 12c/19c/21c。
  • 連接字符串用 Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=...)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=...))) 免 tnsnames.ora。

一句話總結:設計時 32 位 11g Client,運行時 Managed Core 直連 12c+。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved