Odbc
ODBC Microsoft Access 驅動程序:臨時磁碟空間不足
我正在執行空間建模軟體,該軟體使用 Access 數據庫儲存計算所需的數據。每次模型執行時,都會使用 SQL 查詢和 Jet 數據庫引擎 4.0 將數據從 Microsoft Access 2010 數據庫載入到模型中。軟體和數據庫之間的連接是通過 ODBC 建立的。
我需要為數千個位置執行模型,但在執行了數十次模型後,我得到了錯誤:“
$$ ODBC Microsoft Access Driver $$臨時磁碟空間不足”。重新啟動模型後,對於相同的查詢和數據集,計算執行正常,但我很快再次得到錯誤。每個模型執行載入的數據量不同,最多約 30.000 條記錄。僅載入最大的小數據集時。1000 條記錄,錯誤不會發生。 以下沒有工作:
- 增加 Windows 系統資料庫中的 MaxLocksPerFile
- 增加 MaxBufferSize
- 壓縮和修復 .mdb 文件
- 我的臨時磁碟上有足夠的空間
有趣的是,我在舊系統(32 位 Windows XP)上使用相同型號沒有任何問題。只有在這台電腦(64 位 Windows 7、16 Gb RAM)上才會發生錯誤。建模軟體是32位的,ODBC連接是用“c:\Windows\SysWOW64\”目錄下的odbcad32.exe設置的。Windows7 版本似乎存在記憶體洩漏,因為相同的型號和數據在記憶體較少的舊 Windows XP 電腦上執行良好。任何想法都非常感謝!
通常:將 Access 數據庫替換為SQL Express。其最大數據庫大小為 10 GB。它也可能更快。
如果您不想遷移,請嘗試比較查詢計劃(ShowPlan 調試)。我假設 Access 正在使用另一個計劃,因為它可以訪問更多資源。
這是因為 MS Access 表有 2GB 的限制——這可能是問題所在!臨時表最多填充 2 GB,然後引發此錯誤。
作為一個建議
- 將您的查詢分解為一些
sub-query
與他們自己的位置predicates
,最後只加入結果