日期:2014-05-19  浏览次数:21104 次

关于异常详细信息: System.Data.OleDb.OleDbException: 未指定的错误
出现如下提示如何解决?
OleDbException   (0x80004005):   未指定的错误]
      System.Data.OleDb.OleDbConnection.ProcessResults(Int32   hr)   +20
      System.Data.OleDb.OleDbConnection.InitializeProvider()   +57
      System.Data.OleDb.OleDbConnection.Open()   +203
      zczxs.Search.Page_Load(Object   sender,   EventArgs   e)   in   e:\search.aspx.cs:58
      System.Web.UI.Control.OnLoad(EventArgs   e)   +67
      System.Web.UI.Control.LoadRecursive()   +35
      System.Web.UI.Page.ProcessRequestMain()

------解决方案--------------------
1.错误信息
Microsoft OLE DB Provider for ODBC Drivers error '80004005 '
[Microsoft][ODBC Microsoft Access 97 Driver] The Microsoft Jet database
engine cannot open the file '(unknown) '. It is already opened exclusively
by another user, or you need permission to view its data.
原因:
这个错误发生在当IIS使用匿名帐号(通常是IUSR)时,该帐号在NT中对数据库所在的目录
没有正确的权限.(这就是为什么在Win95和PWS下没问题,因为win95根本就没有目录权限这一说)
检查文件和目录的权限. 确定你能够在该目录中有能够新建和删除临时文件的权限。
这些临时文件其实是数据库建立在同一个目录下的文件, 但是要注意的是,有可能这些文件
也可能建立在别的目录,例如 /Winnt.

使用NT的文件监视程序监视文件失败时到底是访问了什么目录。
这个NT的文件监视程序可以在这个地方下载http://www.sysinternals.com.

如果你对数据库使用了一个网络地址,例如映射地址,就要检查一下共享文件和目录的权限,

还要检查一下数据源文件(DSN)是否被别的程序标志成为正在使用中,
这些别的程序一般是Visual InterDev,关闭任何一个InterDev中的正打开和数据库连接的项目。

这个错误还可能发生在这种情况:如果在DSN中使用了一个UNC路径(就是通用命名协议),请改用
本地路径进行测试,因为如果对本地数据库使用UNC也可能出错。
还可能发生在这种情况,如果服务器要访问Access中的一个表,而这个表却联接在一个网络服务器上。

2.错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005 '
[Microsoft][ODBC Microsoft Access 97 Driver] Couldn 't use '(unknown) '; file
already in use.
原因:
多人使用时数据库被锁定。

3.错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005 '
[Microsoft][ODBC Driver Manager] Data source name not found and no default
driver specified.
原因:
最可能的原因是ConnectString是一个在global.asa中初始化的Session变量,但是global.asa
却没有正常工作。解决办法是,检查赋值时是否正确:(在你的asp中加入下面的代码)
<%= " 'auth_user ' is " & request.servervariables( "auth_user ")%>
<P>
<%= " 'auth_type ' is " & request.servervariables( "auth_type ")%>
<P>
<%= "connection string is " & session( "your_connectionstring ")%>
<P>
还有一个原因就是你在你的ConnectString中加入了多余的空格,例如
DSN = MyDSN; Database = Pubs;
试试改成下面这个样子:
DSN=MyDSN;Database=Pubs;

如果是global.asa还没有工作,检查该文件是否在运用程序的根目录中,或者是虚拟目录的根目录中。

还有可能错误出现的原因是DSN名称没找着,这可以采用我提供的id=36767的办法解决。
最后是检查是否安装了最新的驱动程序,既是否是最新的MDAC版本。

4.错误信息
Microsoft OLE DB Provider for ODBC Drivers error '80004005 '
[Microsoft][ODBC Driver Manager] Data source name not ??
原因:
这个错误有可能是出现在你的计算机上软件安装(或则反安装)的顺序上。
如果ODBC的版本不一致的话,就会发生该错误。
解决办法是安装最新版本的MDAC

5.错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005 '