2013-03-13 112 views
7

我有一个.net应用程序中,我一直要求修改,它使用的.NET Framework 2.0ODBC Oracle错误

我已经安装一个ODBC DSN与连接的细节为我们的Oracle数据库我的本地机器上,测试的连接,它工作正常。

现在我运行我的应用程序,它没有问题,完成了,我检查了我们的错误日志,发现了一些与此问题无关的错误,但是这个错误没有显示出来。

因此,我用断点再次运行应用程序以获得这些错误。这一次,它与下面的错误坠毁

ERROR [IM004] [微软] [ODBC驱动程序管理器]驾驶的SQLAllocHandle 上SQL_HANDLE_ENV失败

现在是什么让我在这是,它只是跑罚款甚至不到10分钟前,我只加了一个断点。

我找到了几个答案,并给了他们一个镜头。

  1. 我设置Oracle驱动程序文件夹中的读/执行又比上重置权限并没有什么区别
  2. 我查了“路径”环境变量,它是精细
  3. 使用ODBC管理员我测试了连接没有错误。
  4. 验证连接字符串指向DSN仍然是正确的5.列表项
  5. 已验证我的应用程序设置为运行32位,因为驱动程序是32位。

我没有做的唯一的事情就是保存,关闭重新启动计算机,然后再试一次..我将在这篇文章后立即执行,如果它有效,我会发布。

无论如何,如果有人有任何想法可能会导致此行为,我会非常感谢你。

电脑是Win7的,.NET框架是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() 
+0

你是否正确地处理了你的连接? – 2013-03-13 20:05:06

+0

我检查了一下,我认为它可能不是,但似乎是我找不到任何未关闭的打开的东西。 – sarchbold 2013-03-13 20:15:01

+2

你可以尝试用简单的ODBC调用创建一个非常简单的程序,并查看它是否有效?此外,微软过去有一个名为ODBCTest的应用程序,可让您直接调用所有API函数进行低级测试。看看你是否可以找到它并尝试它。另外,您是否尝试从ODBC管理面板开启ODBC跟踪并查看记录的内容? – OldProgrammer 2013-03-14 03:34:45

回答

0

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

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