2011-06-15 100 views
0

我們擁有的Visual FoxPro 9碼FoxPro的臨時文件問題

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 

我很好奇,如果有辦法處理這個情況下,我們不必擔心應用程序保持正在使用的文件的另一種方法(可能是讀取),而它試圖寫入文件,其中隨後失敗,因爲它已被使用。

+0

表是如何創建的.... select * from into ???或創建表...或者它總是有一個表...你可以發佈一些代碼段? – DRapp 2011-06-16 01:28:45

回答

0

.IDX文件是一個包含一個索引的獨立索引文件,與.CDX相反,該文件是一個可包含許多索引文件的複合索引文件。

它是一個權限問題 - 當它作爲網絡管理員運行時是否工作?

什麼版本的FoxPro/Visual FoxPro是EXE編譯的?

什麼是客戶端和服務器操作系統?

0

您正在使用的操作系統很重要!如果程序在Windows Vista,7或Server 2008上運行,則無法在任何地方無限制地創建文件。 最好的方法是在用戶的TEMP目錄中創建此臨時索引。在那裏你總是有充分的權利來寫或刪除文件。 如果只是用

INDEX ON batchno TO temp FOR !DELETED() 

的IDX將在默認目錄中創建。如果這個目錄是C:\ Program Files文件... Windows的UAC將不允許將它寫入並將文件重定向到c:\ Windows下的某個臨時目錄。 使用SYS(2023),您可以獲取用戶的TEMP目錄。 所以試試這個:

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