我正在开发一个使用Jet的遗留visual basic应用程序。OLEDB.4.0连接字符串。用户希望将应用程序的数据库(.mdb文件)移动到网络位置。我能够允许用户设置新的数据文件位置,一切都正常,只是与数据库在本地机器上相比速度非常慢。Microsoft建议更改连接字符串中的PageTimeout属性(http://support.microsoft.com/kb/246560/EN-US)这就是我遇到问题的地方。以下是有效但速度较慢的连接字符串:
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属性时,我从Visual Studio收到一个"找不到可安装的ISAM。"错误。我确信我在这里错过了一些非常简单的东西,这甚至可能无法修复缓慢的网络性能。以下是引发错误的连接字符串:
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"
如果您能提供任何帮助,我们将不胜感激。
拼写不同:
Jet OLEDB:Page Timeout // note the space
此处提供完整文档:
Jet OLEDB:页面超时(DBPROP_JETOLEDB_PAGETIMEOUT)
指示Jet在检查其缓存是否与数据库文件过期之前等待的毫秒数。
然而,该值根本不能在连接字符串中设置,正如KB 318161所解释的:
Microsoft OLE DB Provider for Jet包含许多自定义属性只有在与数据库这些特定于提供程序的属性是自定义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:事务提交模式
这可能不是您问题的解决方案,但作为一个潜在的快速解决方案,您是否尝试过使用DSN?一旦你在Windows ODBC中设置了它,你就可以改变你的连接字符串,如下所示:
"DSN=MyDSN;PageTimeout=5000;">
同样,这可能不是一个解决方案,但它可能是一个快速的解决方案,让你同时行动起来。