7

我有一个被要求修改的 .net 应用程序,它使用 .net framework 2.0

我已经在我的本地机器上设置了一个带有 Oracle DB 连接详细信息的 ODBC DSN,测试了连接,它工作正常。

现在我运行我的应用程序,它没有问题并完成,我检查了我们的错误日志,发现了几个与这个问题无关的错误,但这个错误没有出现。

所以我用断点再次运行应用程序以解决这些错误。这次它因以下错误而崩溃

错误 [IM004] [Microsoft][ODBC Driver Manager] SQL_HANDLE_ENV 上的驱动程序 SQLAllocHandle 失败

现在让我明白的是,它甚至在 10 分钟前运行良好,我只添加了一个断点。

我找到了一些答案,并给了他们一个机会。

  1. 我将 oracle 驱动程序文件夹上的读取/执行设置为关闭而不是打开以重置权限,这没有任何区别
  2. 我检查了“路径”环境变量,没问题
  3. 使用 ODBC 管理器我测试了没有错误的连接。
  4. 验证指向 DSN 的连接字符串仍然正确 5. 列表项
  5. 已验证我的应用程序设置为运行 32 位,因为驱动程序是 32 位的。

我唯一没有做的就是保存,关闭重新启动计算机并重试。我将在这篇文章之后立即执行此操作,如果它有效,我会发布。

无论如何,如果有人知道什么可能导致这种行为,我会非常感谢你。

电脑是Win7,.net FrameWork是2.0,是VB.net,Oracle驱动是10g(10.2)

更新:好的,我使用 ODBC 管理器删除 DSN 并重建它。我运行了我的应用程序并且它有效。

我今天晚些时候在没有更改后回来并重新运行了应用程序并再次收到错误。尝试重建DSN,但没有帮助,我尝试重新启动,但没有帮助。

下面是堆栈跟踪。

StackTrace:
       at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
       at System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle)
       at System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions)
       at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
       at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
       at System.Data.Odbc.OdbcConnection.Open()
4

1 回答 1

1

你是在远程桌面上运行这个吗?如果是这样,您可能必须将远程桌面用户的“创建全局对象”添加到本地策略中。

如果您在本地桌面上,请检查您正在运行的 ODBC 驱动程序的版本。如果它早于 11.2.xx,您可能应该从 Oracle 安装更新的 ODBC 驱动程序(不要使用 Microsoft Oracle ODBC 驱动程序 - 它有问题)。

于 2013-05-14T14:38:34.807 回答