我有一个用ASP Classic编写的应用程序并连接到FoxPro数据库,它间歇地抛出了这个错误消息,在IIS日志文件中找到:
14 | 80004005 | [Microsoft] [ODBC Visual FoxPro驱动程序]无法创建临时工作文件。
引用的行是针对FoxPro数据库的SELECT语句。每次运行此特定SELECT语句时都不会发生错误。
有关此错误的有用的MSDN Article表明问题是由于权限或磁盘空间造成的。权限至少是半功能的,因为问题并不总是发生。磁盘空间也不是问题,因为驱动器上有足够的可用空间(8GB),与所讨论的数据库大小成比例(约500MB)。
我还能找到什么?
答案 0 :(得分:1)
FoxPro ODBC驱动程序是否自行清理?
查看您的TEMP文件夹(在我的案例中由%TEMP%
环境变量定义),您可能会看到大量与[A-Z0-9]{8}\.TMP
表达式匹配的文件(例如LVAK00AQ.TMP
)
根据这篇古老的书,FIX: TMP File Errors If ALTER TABLE Runs Same Time As ODBC DLL:
Visual FoxPro和VFP ODBC驱动程序都使用相同的命名 临时(.tmp)文件创建的约定和算法。如果两者 程序同时运行,进程中存在冲突 尝试访问相同的文件或相同的文件名。这场冲突 创建不同的错误消息。
Visual FoxPro 5.0x使用基于系统的临时文件命名方案 时钟。这些名称是为内部使用而生成的 文件名永远不会在磁盘上创建。但是,有 许多情况下FoxPro确实在磁盘上创建临时文件, 所以名称生成方案可能会导致两个或两个进程 运行时的实例在同一进程中生成相同的 临时文件名。如果两个进程都尝试创建临时文件 稍后在磁盘上,只有第一个成功。
根据我的经验,文件命名模式基于一小部分时间,并且字母数字方案限制为8个字符,它将在短时间内从0开始(不确定是小时还是数天)
如果需要将临时文件写入磁盘,并且该文件已经存在以前的执行,那么驱动程序将抛出错误"无法创建临时工作文件"而不是覆盖以前的文件;
答案 1 :(得分:0)
您是否为IUSR_machinename& IWAM_机器?