【问题标题】:FoxPro ODBC Driver Error "Unable to Create Temporary Work Files"FoxPro ODBC 驱动程序错误“无法创建临时工作文件”
【发布时间】:2014-06-09 13:26:26
【问题描述】:

我有一个用 ASP Classic 编写的应用程序并连接到 FoxPro 数据库,该数据库间歇性地抛出此错误消息,可在 IIS 日志文件中找到:

14|80004005|[Microsoft][ODBC Visual FoxPro Driver]无法创建临时工作文件。

引用的行是针对 FoxPro 数据库的 SELECT 语句。每次运行这个特定的 SELECT 语句时都不会发生错误。

关于这个错误的有用的MSDN Article 表明问题是由于权限或磁盘空间造成的。权限至少是半功能的,因为问题并不总是发生。磁盘空间也不是问题,因为驱动器上有足够的可用空间 (8GB) 与相关数据库的大小(约 500MB)成正比。

我还能寻找什么?

【问题讨论】:

    标签: asp-classic odbc visual-foxpro


    【解决方案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 重新开始(不确定是几小时还是几天) .

    如果需要将临时文件写入磁盘,并且该文件在之前的执行中已经存在,那么驱动程序不会覆盖之前的文件,而是会抛出错误“无法创建临时工作文件”。

    【讨论】:

      【解决方案2】:

      您是否授予了 IUSR_machinename 和 IWAM_machinename 的文件夹和文件夹内容更改权限?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-22
        • 1970-01-01
        • 2010-09-25
        • 2014-05-07
        • 2018-01-22
        • 2013-08-14
        • 2011-11-12
        • 1970-01-01
        相关资源
        最近更新 更多