我有一个旧的 Delphi 7 应用程序,我修复了一些。它使用 Access 数据库。大约有 150 个用户都远程打开应用程序并并行访问数据库。在我开始修复之前(呵呵),这很好用(除了 Delphi 应用程序中的错误),即使数据库偶尔有点慢。
现在我添加了一些功能和两个新表,我突然遇到了非常奇怪的问题。
- MSAccess 可以访问数据库(2010 版)。这意味着: 双击文件将打开 MSAccess 并打开数据库文件。
- Delphi 7 应用程序可以访问数据库。
- Delphi 应用程序的两个或多个实例可以共享数据库,前提是我将原始 ConnectionString 模式从“ReadWrite”更改为“Share Deny None”(下面的整个连接字符串)。
- 一旦 Delphi 应用程序的一个实例运行,数据库文件就不能再通过双击打开了。(当我这样做时没有任何反应)。但是,我可以打开 MSAccess 并从其中打开数据库文件。那可行。
连接字符串:
Provider=Microsoft.Jet.OLEDB.4.0;
User ID=Admin;Data Source=DBPath;
Mode=Share Deny None;
Extended Properties="";
Persist Security Info=False;
Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";
Jet OLEDB:Database Password=****;
Jet OLEDB:Engine Type=5;
Jet OLEDB:Database Locking Mode=1;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don`t Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False
我仍然需要查看 Renaud Bompuis 就共享安全设置提出的所有建议,但我必须为此找到一个管理员,因此可能需要一段时间。