.DBF文件无法在共享模式下打开

时间:2012-04-11 16:43:04

标签: legacy foxpro dbf visual-foxpro

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

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

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

3 个答案:

答案 0 :(得分: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...

PER COMMENT / FEEDBACK

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

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

cd "whatever path"
use Message EXCLUSIVE
PACK
use

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

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

看看它给你的是什么

...

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

答案 1 :(得分:1)

我多年没有遇到过NetWare,但是在我过去常常与之争斗的那一天,因为Client32 For Windows在使用默认设置时,与FoxPro / Clipper DBF锁定机制不能很好地配合。例如This

答案 2 :(得分:0)

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