Jet.OLEDB.4.0连接字符串错误

时间:2014-02-12 20:14:15

标签: connection-string oledbconnection

我正在使用Jet.OLEDB.4.0连接字符串的传统Visual Basic应用程序。用户想要将应用程序的数据库(.mdb文件)移动到联网位置。我能够允许用户设置新的数据文件位置,一切正常,只有与db在本地计算机上的情况相比,它才会非常慢。 Microsoft建议更改连接字符串(http://support.microsoft.com/kb/246560/EN-US)中的PageTimeout属性,这就是我遇到问题的地方。以下是有效的连接字符串,但速度很慢:

Public connStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Settings.DataFolderPath & "\Data.mdb;Persist Security Info=True;Jet OLEDB:Database Password=Password;"

当我尝试添加PageTimeOut属性时,我得到一个“无法找到可安装的ISAM”。 Visual Studio中的错误。我确定我在这里遗漏了一些非常简单的东西,这甚至可能无法解决网络性能缓慢的问题。这是抛出错误的连接字符串:

Public connStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Settings.DataFolderPath & "\Data.mdb;Persist Security Info=True;Jet OLEDB:Database Password=Password;PageTimeout=5000"

我也试过

Public connStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Settings.DataFolderPath & "\Data.mdb;Persist Security Info=True;Jet OLEDB:Database Password=Password;Jet OLEDB:PageTimeout=5000"

非常感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

拼写不同:

Jet OLEDB:Page Timeout   // note the space

完整文档here

  

Jet OLEDB:页面超时(DBPROP_JETOLEDB_PAGETIMEOUT)

     

表示Jet在检查其缓存是否与数据库文件过期之前将等待的毫秒数。

尽管如此,根据KB 318161解释,根本无法在连接字符串中设置该值:

  

适用于Jet的Microsoft OLE DB提供程序包含许多自定义属性   只有在建立连接后才可以设置   数据库。这些特定于提供程序的属性是自定义OLE DB会话   属性。您不能在ADO OLE DB中设置这些属性   连接串;您必须在连接后设置这些属性   打开了。

     

指定以下Jet特定时会发生此错误   连接字符串中的属性:

     
      
  • Jet OLEDB:ODBC命令超时
  •   
  • Jet OLEDB:每个文件的最大锁定数
  •   
  • Jet OLEDB:隐式提交同步
  •   
  • Jet OLEDB:刷新交易超时
  •   
  • Jet OLEDB:锁定延迟
  •   
  • Jet OLEDB:最大缓冲区大小
  •   
  • Jet OLEDB:用户提交同步
  •   
  • Jet OLEDB:锁定重试
  •   
  • Jet OLEDB:独有的异步延迟
  •   
  • Jet OLEDB:共享异步延迟
  •   
  • Jet OLEDB:页面超时
  •   
  • Jet OLEDB:回收长值页面
  •   
  • Jet OLEDB:重置ISAM统计信息
  •   
  • Jet OLEDB:连接控制
  •   
  • Jet OLEDB:ODBC解析
  •   
  • Jet OLEDB:页面锁定到表锁定
  •   
  • Jet OLEDB:沙盒模式
  •   
  • Jet OLEDB:事务提交模式
  •   

答案 1 :(得分:0)

这可能不是您问题的解决方案,但作为潜在的快速解决方案,您是否尝试过使用DSN?在Windows ODBC中进行设置后,可以将连接字符串更改为:

“DSN = MyDSN;将PageTimeout = 5000;”

同样,这可能不是一个解决方案,但它可能是一个快速解决方案,让你同时移动。