我正在使用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"
非常感谢您提供的任何帮助。
答案 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;”
同样,这可能不是一个解决方案,但它可能是一个快速解决方案,让你同时移动。