【问题标题】:How to force the use of ODBC-version 2.x in C# application如何在 C# 应用程序中强制使用 ODBC 版本 2.x
【发布时间】:2019-03-27 09:01:10
【问题描述】:

Odbc-driver 是 2.x 版,但在 Visual Studio 中,使用的是 3.x 版。 需要以某种方式强制应用程序使用版本 2.x 现在,出现错误:“驱动程序不支持应用程序请求的 ODBC 行为版本(请参阅 SQLSetEnvAttr)。” - 但无法告诉应用程序使用其他版本

尝试与霍尼韦尔系统通信。 他们不以共享数据而闻名 - 但有一个 ODBC 驱动程序,由大约 15 年前的某人编写。 在 Windows 2003 服务器上运行并在 Visual Studio 2005 中编译(在同一台服务器上)时,应用程序可以工作。 在其他服务器上运行的相同应用程序:不工作。 在任何其他机器上编译的应用程序 (x86):不工作,不在旧服务器上,不在新服务器上。

System.Data.Odbc.OdbcConnection 上找不到属性或方法,以设置要使用的 ODBC 版本。

目前,运行应用程序时不会出现“错误”: 它连接到 dsn,并且用户通过了身份验证。 (更改用户名或密码会出错) - 但没有获取数据。

跟踪对 ODBS 驱动程序的调用给出:

DIAG [IM006] [Microsoft][ODBC Driver Manager] 驱动程序的 SQLSetConnectAttr 失败 (0)

DIAG [01000] [Microsoft][ODBC Driver Manager] 驱动程序没有 支持应用程序请求的 ODBC 行为版本 (请参阅 SQLSetEnvAttr)。 (0)

....

DIAG [IM006] [Microsoft][ODBC Driver Manager] 驱动程序的 SQLSetConnectAttr 失败 (0)

DIAG [HY096] [Honeywell][ODBC Driver]信息类型超出范围 (1043)

....

诊断 [HYC00] [霍尼韦尔][ODBC 驱动程序]驱动程序不支持 (1010)

所以,由于没有更新的驱动程序可供使用 - 我需要我的应用程序使用 ODBC 2.x - 但它仍然使用 ODBC 3.x。

【问题讨论】:

  • 您可以在控制面板中设置 ODBC 数据源:管理工具:ODBC 数据源

标签: c# odbc honeywell


【解决方案1】:

当您告诉 VS C# 连接到 ODBC 数据源时,它会使用 Microsoft ADO.NET Provider for ODBC 无形地桥接到 ODBC,它希望一切都保持最新状态。

在这种情况下,您最好的选择是切换到不同的 ADO.NET 提供程序,该提供程序了解您不能总是拥有新的 ODBC 驱动程序,并且会尽力将较新的 C# ADO.NET API 调用转换为较旧的必要时调用 ODBC API。我的雇主提供了两种选择,一种是Enterprise Edition Data Access for ODBC Data Sources,另一种是Virtuoso Universal Server Enterprise Edition(用作虚拟DBMS),两者都可以立即下载,并提供免费的临时许可证供您测试和使用评估。

【讨论】:

    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 2011-04-26
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 2014-02-09
    相关资源
    最近更新 更多