ODBC Error: Driver not capable
ODBC Error: Driver not capable
我正在开发的应用程序中与 AS/400 建立 ODBC 连接。它只是执行 DELETE
,然后执行 INSERT
。没有什么疯狂或复杂的。在我的 64 位 Windows 7 Pro 桌面上一切正常(更新:不再正确)但是当我尝试 运行 我的 32 位笔记本电脑上的应用程序进行演示时,我收到以下错误:
ERROR [S1C00] [Micro Focus][Rumba Data Access][S1023934]Driver not
capable. SQLSetConnectOption ERROR [IM006] [Microsoft][ODBC Driver
Manager] Driver's SQLSetConnectAttr failed ERROR
[01000][Microsoft][ODBC Driver Manager] The driver doesn't support the
version of ODBC behavior that tha pplication requested (see
SQLSetEnvAttr). ERROR [08004][Micro Focus][RUMBA Data
Access][S1023934]Data source rejected establishment of connection.
APPC Primary RC = Allocation_Error; Secondary RC =
Allocation_Failure_No_Retry.
我不确定发生了什么。在 32 位笔记本电脑上设置 DSN 时,我可能搞砸了,但它看起来与我在 64 位台式机上设置的完全一样……32 位和 64 位之间有什么不同吗版本还是有其他事情发生?
谢谢!
编辑:我刚在另一个 64 位桌面上试过,我得到了同样的错误。我设置 DSN 的方式一定有问题,因为我几个月前在我的机器上设置它并且可能会忘记一些东西。
EDIT2:我 运行 Windows 在桌面上进行更新,一切正常,但现在也无法正常工作。有问题的 Windows 更新是否可能导致我的问题?
EDIT3:评论中要求我启用跟踪并查看会发生什么。浏览它,这里有一些值得注意的消息:
EXIT SQLDriverConnectW with return code -1 (SQL_ERROR)
和:
EXIT SQLGetDiagRecW with return code 100 (SQL_NO_DATA_FOUND)
其他一切看起来都以状态 0 退出 (SQL_SUCCESS)
使用 ODBC 管理器,打开跟踪。尝试您的应用程序并查看 SQL_ATTR_ODBC_VERSION 的日志文件。你应该看到这样的东西:
odbct32w fc0-1ad0 ENTER SQLSetEnvAttr
SQLHENV 0x007A1DE0
SQLINTEGER 200 <SQL_ATTR_ODBC_VERSION>
SQLPOINTER 3 <SQL_OV_ODBC3>
SQLINTEGER 0
odbct32w fc0-1ad0 EXIT SQLSetEnvAttr with return code 0 (SQL_SUCCESS)
SQLHENV 0x007A1DE0
SQLINTEGER 200 <SQL_ATTR_ODBC_VERSION>
SQLPOINTER 3 <SQL_OV_ODBC3>
SQLINTEGER 0
不同之处在于您返回的是 SQL_ERROR 而不是成功。检查第三个参数是什么(在我的例子中是SQL_OV_ODBC3
)。您的应用程序设置的版本很可能比您的 ODBC 驱动程序支持的版本更新。您需要避免使用较新的 ODBC 功能或将您的驱动程序升级到支持更高级别 ODBC 的驱动程序。
安装此 Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update 后问题已解决。
根据微软的说法,
A security issue has been identified leading to a vulnerability in MFC applications that are built with Visual Studio 2005 and ship the Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package.
为什么安装安全补丁(而不是错误修复补丁)解决了我无法解决的问题...
我正在开发的应用程序中与 AS/400 建立 ODBC 连接。它只是执行 DELETE
,然后执行 INSERT
。没有什么疯狂或复杂的。在我的 64 位 Windows 7 Pro 桌面上一切正常(更新:不再正确)但是当我尝试 运行 我的 32 位笔记本电脑上的应用程序进行演示时,我收到以下错误:
ERROR [S1C00] [Micro Focus][Rumba Data Access][S1023934]Driver not capable. SQLSetConnectOption ERROR [IM006] [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed ERROR [01000][Microsoft][ODBC Driver Manager] The driver doesn't support the version of ODBC behavior that tha pplication requested (see SQLSetEnvAttr). ERROR [08004][Micro Focus][RUMBA Data Access][S1023934]Data source rejected establishment of connection. APPC Primary RC = Allocation_Error; Secondary RC = Allocation_Failure_No_Retry.
我不确定发生了什么。在 32 位笔记本电脑上设置 DSN 时,我可能搞砸了,但它看起来与我在 64 位台式机上设置的完全一样……32 位和 64 位之间有什么不同吗版本还是有其他事情发生?
谢谢!
编辑:我刚在另一个 64 位桌面上试过,我得到了同样的错误。我设置 DSN 的方式一定有问题,因为我几个月前在我的机器上设置它并且可能会忘记一些东西。
EDIT2:我 运行 Windows 在桌面上进行更新,一切正常,但现在也无法正常工作。有问题的 Windows 更新是否可能导致我的问题?
EDIT3:评论中要求我启用跟踪并查看会发生什么。浏览它,这里有一些值得注意的消息:
EXIT SQLDriverConnectW with return code -1 (SQL_ERROR)
和:
EXIT SQLGetDiagRecW with return code 100 (SQL_NO_DATA_FOUND)
其他一切看起来都以状态 0 退出 (SQL_SUCCESS)
使用 ODBC 管理器,打开跟踪。尝试您的应用程序并查看 SQL_ATTR_ODBC_VERSION 的日志文件。你应该看到这样的东西:
odbct32w fc0-1ad0 ENTER SQLSetEnvAttr
SQLHENV 0x007A1DE0
SQLINTEGER 200 <SQL_ATTR_ODBC_VERSION>
SQLPOINTER 3 <SQL_OV_ODBC3>
SQLINTEGER 0
odbct32w fc0-1ad0 EXIT SQLSetEnvAttr with return code 0 (SQL_SUCCESS)
SQLHENV 0x007A1DE0
SQLINTEGER 200 <SQL_ATTR_ODBC_VERSION>
SQLPOINTER 3 <SQL_OV_ODBC3>
SQLINTEGER 0
不同之处在于您返回的是 SQL_ERROR 而不是成功。检查第三个参数是什么(在我的例子中是SQL_OV_ODBC3
)。您的应用程序设置的版本很可能比您的 ODBC 驱动程序支持的版本更新。您需要避免使用较新的 ODBC 功能或将您的驱动程序升级到支持更高级别 ODBC 的驱动程序。
安装此 Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update 后问题已解决。
根据微软的说法,
A security issue has been identified leading to a vulnerability in MFC applications that are built with Visual Studio 2005 and ship the Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package.
为什么安装安全补丁(而不是错误修复补丁)解决了我无法解决的问题...