0

我目前正在尝试调试我公司遗留系统的问题。最初的项目是在 90 年代中期开发的,知道该系统的每个人都离开了公司。目前,我们发现其中一个 .DBF 文件出现错误,这是一个包含不超过 4-5 列且几乎没有任何行的简单表。系统向我们发送的消息是我们无法在共享模式下打开 Message.dbf。

有没有办法以独占模式打开数据库?我们有一个带有 DBFManager 和 Visual FoxPro 6.0 设置的系统。任何提示或这些类型数据库信息的链接都会有所帮助。我们没有人了解这些系统。我希望我能提供更详细的信息,但我在这里不知所措。

到目前为止,我们已经尝试用系统上的多个备份替换该文件,并重新启动 .DBF 文件所在的服务器(以防出现锁定问题)。到目前为止,还没有解决这个问题。

4

3 回答 3

2

你提到你有 VFP 6 ......我将从打开 VFP 开始。在命令窗口中,键入

CD "C:\wherever Your Application Data is"    (enter)
use Message SHARED   (enter)
browse normal    (enter)

如果您可以看到数据的内容,则说明文件没有损坏。

对于这样一个旧应用程序来说,这显然是一个最近的问题。当您提到以“共享”模式打开文件时。是否添加了代码来打开文件?如果是这样,“消息”表是否已经打开并由同一个别名使用?如果是这样,那将导致它失败。您不能在两个不同的工作区中打开具有相同“别名”名称的同一个表。如果是这种情况,您可以尝试通过执行类似...

if used( "Message" )
   select Message
else
   select 0
   use Message
endif 

... continue with rest of code...

每个评论/反馈

如果它是从服务器关闭的,我已经看到,在文件似乎被用户锁定之前,由于无效断开连接。有时,它只要求所有用户再次注销/登录以强制将其所有资源释放到服务器......但如果实际的服务器被关闭并重新启动,那么无论如何用户会话都会被清除。我会检查服务器仍然认为谁仍然打开 Message.dbf 表。此外,如果需要,将所有用户踢出并手动使用 VFP 中的表格,仅用于微笑,打包它

我还将通过简单复制/粘贴数据所在的整个文件夹进行备份...然后启动 VFP 并执行以下操作...

cd "whatever path"
use Message EXCLUSIVE
PACK
use

如果它是数据库的一部分,则数据库可能会以某种方式/某处损坏。为了测试...

cd "whatever path"
close all
open database YourDatabase Exclusive
Validate Database

看看它给了你什么

...

再来一条评论。我看到你提到 NetWare (Novell)。我过去看到的东西... 最近是否有任何用户从系统中删除(即:从 NetWare)?如果是这样,并且文件最初是由“该用户”创建的,那么一旦该用户消失,所有对该文件执行任何操作的权限也将消失。您最好以管理员身份登录,选择所有文件并以管理员身份“获得所有权”。管理员永远不会有添加/编辑的限制,也永远不会作为用户被删除,因此再也不会出现这个问题。同样,这只是我从历史中记得的另一个选择,可能是问题的一部分。

于 2012-04-11T18:38:01.823 回答
1

我已经很多年没有遇到过 NetWare,但在过去我经常与它发生争执,因为 Client32 For Windows 在使用默认设置时,不能很好地与 FoxPro / Clipper DBF 锁定机制配合使用。例如,这个。

于 2012-04-13T16:19:51.497 回答
0

我们无法准确调试打开 .dbf 文件的问题。相反,我们找到了几周前的系统备份,并且能够将整个系统恢复到该状态。该程序目前运行良好,但我们最初无法找到问题的原因。

于 2012-04-25T14:53:25.683 回答