2016-09-21 166 views
0

我有3個SAS數據集作爲自動化每週過程的一部分導出到MS Access,作爲新數據庫中的3個表。數據集大約有150萬條記錄,總數約爲670Mb。導出到MS Access的SAS錯誤:超出系統資源

我一直無法找出原因,但SAS未能將數據導出相當頻繁,給我這個錯誤時,它的作用:

ERROR: CLI execute error: [Microsoft][ODBC Microsoft Access Driver] System resource exceeded. 

,它產生錯誤(代碼運行一次每個數據集,只改變數據名稱和數據表各一個):

PROC EXPORT DATA = &_dataname_. 
    OUTTABLE = "&_datatable_." 
    DBMS = ACCESSCS REPLACE; 
DATABASE = "&_databasename_..mdb"; 
RUN; 

我知道訪問有一個2GB的限制,但數據集是不是大小附近的任何地方。我也看到有32000條記錄的記錄限制,但我可以經常出口比沒有任何問題更多,所以我不確定這也是原因。但是,我懷疑它必須與數據的大小有關,因爲它往往只會在將第二個或第三個表添加到數據庫後拋出該錯誤。

所以,我的問題來了這兩個部分:

  • 這究竟是爲什麼?

  • 沒有使用像MySQL這樣的其他數據庫,我該如何解決這個問題/解決它?

感謝您提供任何幫助。非常感謝!

+0

你使用什麼Access版本? – Rene

+0

Access 2010,並且所有內容都以.mdb擴展名保存。 – Zack

+0

一個很遠的位,但這可能有所幫助:https://support.microsoft.com/en-us/kb/2726928 – Rene

回答

0

這不是一個記錄限制問題,但它幾乎可以肯定太多的數據Access的合理處理。 SAS中的「X」MB不一定會轉換爲Access中的「X」MB。而且,Access並不是爲了處理數百萬行數據而設計的(這當然不會阻止人們嘗試)。

當我定期開發Access數據庫時,我發現表中包含二十多列員工地址和聯繫信息的表中超過100,000行的任何內容開始導致性能下降。

如果你可以使用MySQL或SQL Server,那麼我會走這條路......從長遠來看對你來說更少麻煩,並且還有更好的可伸縮性。

+0

不幸的是,我*有*使用Access;我的老闆已經打倒了切換到真實數據庫的想法,因爲很多人已經擁有並使用Access。我真的不認爲他會願意做出改變,直到發生災難性事件。 – Zack

+0

如果這是一個最終用戶需要訪問的問題,他們仍然可以這樣做,而數據本身託管在更合適的平臺上。這只是維護與SQL Server或MySQL或任何其他鏈接到Access前端的問題。如果成本是一個考慮因素,那麼有很多免費的SQL平臺。也許做一個側面概念證明,並證明它可以很好地工作... –

+0

我真的不知道你甚至可以做到這一點;我們通常只是創建Access數據庫,然後將其放入共享驅動器供人們使用。 你知道任何資源可以解釋如何創建一個與SQL Server鏈接的Access前端? – Zack