FoxPro临时文件问题

时间:2011-06-15 18:49:01

标签: foxpro visual-foxpro

我们有以下Visual FoxPro 9代码行

INDEX ON batchno TO temp FOR !DELETED()

我们遇到一个问题,FoxPro编译的应用程序将运行,尝试枚举文件夹的内容,查找临时文件,创建临时文件(数据库名为temp.idx),然后继续进行进一步处理引用临时数据。

当我们在具有NFS文件系统的Novell目录服务器上时,这似乎工作正常。但是,现在我们已经转移到具有NTFS文件系统的MS Active Directory服务器,我们遇到了一个问题,即编译的FoxPro应用程序无法再写入该文件。

进程监视器在发生错误时显示以下输出:

Operation:   CreateFile
Result:   SHARING VIOLATION
Desired Access:  Generic Read/Write
Disposition:  OverwriteIf
Options:  Synchronous IO Non-Alert, Non-Directory File
Attributes:  N
ShareMode:  None
AllocationSize:  0

我很好奇是否有另一种方法来处理这种情况,我们不必担心应用程序在尝试写入文件时保持文件正在使用(可能是读取),因为它是已经在使用中。

2 个答案:

答案 0 :(得分:0)

<。> .IDX文件是包含一个索引的独立索引文件,而.CDX是一个可以包含多个索引文件的复合索引文件。

是权限问题 - 以网络管理员身份运行时是否有效?

什么版本的FoxPro / Visual FoxPro是EXE编译的?

什么是客户端和服务器操作系统?

答案 1 :(得分:0)

您使用的操作系统非常重要!如果程序在Windows Vista,7或Server 2008上运行,则无法在没有限制的情况下随处创建文件。 最好的方法是在用户的TEMP-Directory中创建此临时索引。在那里,您始终拥有写入或删除文件的完整权限。 如果您只是使用

INDEX ON batchno TO temp FOR !DELETED()

IDX将在默认目录中创建。如果此目录是C:\ Program Files ... Windows的UAC将不允许在那里写入它并将文件重定向到c:\ Windows下的某个临时目录。 使用SYS(2023),您可以获得用户的TEMP-Directory。 所以试试这个:

INDEX ON batchno TO (SYS(2023) + "\temp.idx") FOR !DELETED()