通常有兩種原因導致access資料庫文件越變越大。一是寫進資料庫的記錄確實在日益增長;二是隨著反復向資料庫插入、修改和刪除數據,又或者在資料庫中不斷創建、修改和刪除資料庫對象,如數據表、查詢、窗體、模塊等等操作使得資料庫文件里累積了大量的碎片和垃圾。
對於第一種原因導致的資料庫文件變大可以通過、刪除無用的記錄和壓縮資料庫等常規辦法來減小文件體積。而對於第二種原因導致的資料庫文件變大,常規的辦法往往沒不起作用,如何解決,題主可以參考以下知道回答。
https://..com/question/234449005
2. Access資料庫文件過大,壓縮了好久還是超過50m怎麼辦
1、經實踐總結,當Access資料庫超過50M時,網站的整體響應會變得非常緩慢,同時也會影響伺服器上內其他網站的性能。如果容數據非常大,建議你升級為SQL Server資料庫。
2、如果你的網站中有留言本等交互性頁面,務必設置驗證碼等防護措施,以免被黑客灌入大量數據,出現資料庫持續變大的不利情況。
3、我們在設計程序時,注意在頁面的尾部加上資料庫關閉代碼,有利於網站的良好運行。代碼示例如下:
Rs.Close
Set Rs=Nothing
Conn.Close
Set Conn=Nothing
3. ACCESS資料庫變的非常大,如何瘦身
壓縮一下就好了。
或者直接把後綴改成cab,使用的時候使用ACCESS打開。
ACCESS軟體包括很多多餘的後台處理代碼,每一個視圖生成過程都會有很多未清理得痕跡,你可以做個實驗,拖放一個按鈕到窗體上,查看他的代碼,你會發現他已經再後台生成了一堆代碼。壓縮得目的,就是處理這些冗餘分配空間。
4. 怎麼解決ACCESS資料庫太大造成運行慢的問題
1.時候在使用Access文件的時候,隨著增刪改的不斷的連續,會導致文件越來越大。即使手動刪除或者使用delete語句刪除了大量的數據記錄,會發現文件的大小依然沒有減掉,而且隨著你再往裡寫數據,又會增大。
2.產生這個現象的原因跟Access本身的機制有關,具體也不清楚,好像是有什麼歷史記錄還是什麼存儲碎片。ACCESS資料庫在進行刪除操作後,並不從該資料庫中把數據清除掉,而是刪除其索引相關的東西,雖然顯示不出來,但是那些東西還是在文件中存在的,所以會引起ACCESS資料庫文件越來越大。即使是我們不通過代碼來訪問access文件,而只是通過用戶界面訪問,隨著文件的增大,也會帶來一系列的問題。其症狀包括:對象可能打開得更慢,查詢可能比正常情況下運行的時間更長,各種典型操作通常似乎也需要使用更長時間。更何況如果在網站應用中,採用的是Access作為資料庫的話,這里就有了性能上的問題。文件越來越大,會影響查詢的速度,而且ACCESS是採用獨占方式工作的,也就是說一次只能一個進程打開這個資料庫執行操作,如果是多個用戶的話就要"排隊"了,所以ACCESS資料庫如果變為很大的話,執行一個查詢時間就會變長,而進程"排隊"的等待時間也就會變得很久,專業型的資料庫就不同,可以同時接收多個並發的訪問,可以採用SQL資料庫或其它大型並發數很強的資料庫。
3.但是很多時候我們是需要Access文件,往不同的地方拷貝的,比如說,一個Server上生成了一個Access文件,需要拷貝到另外的Server上,而且Server間如果網速不是很好的話,會需要很長的時間來傳輸這個文件。所以這時候我們希望這個文件在內容不變的前提下,越小越好。所以我們可以去除這個Access的冗餘信息。
4.Office Access本身就有這種功能,我們可以通過菜單找到這個工具,然後單擊這個圖標手動壓縮。
5.執行以下這幾句代碼就可以了。
首先引用C:Program FilesCommon FilesSystemadomsadox.dll,該DLL包含ADOX命名空間;
接著引用C:Program FilesCommon FilesSystemadomsjro.dll,該DLL包含JRO命名空間
注意:如,導入dll不成功,手動把com組件 導入為 .net組件,在用vs.net工具導入
///壓縮修復ACCESS資料庫,mdbPath為資料庫絕對路徑
public void Compact(string mdbPath)
{
if (!File.Exists(mdbPath)) //檢查資料庫是否已存在
{
throw new Exception("目標資料庫不存在,無法壓縮");
}
//聲明臨時資料庫的名稱
string temp = DateTime.Now.Year.ToString();
temp += DateTime.Now.Month.ToString();
temp += DateTime.Now.Day.ToString();
temp += DateTime.Now.Hour.ToString();
temp += DateTime.Now.Minute.ToString();
temp += DateTime.Now.Second.ToString() + ".bak";
temp = mdbPath.Substring(0, mdbPath.LastIndexOf("\") + 1) + temp;
//定義臨時資料庫的連接字元串
string temp2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + temp;
//定義目標資料庫的連接字元串
string mdbPath2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=l1epc2";
//創建一個JetEngineClass對象的實例
JetEngineClass jt = new JetEngineClass();
//使用JetEngineClass對象的CompactDatabase方法壓縮修復資料庫
jt.CompactDatabase(mdbPath2, temp2);
//拷貝臨時資料庫到目標資料庫(覆蓋)
File.Copy(temp, mdbPath, true);
//最後刪除臨時資料庫
File.Delete(temp);
}
5. 怎樣減少ACCESS資料庫大小
下面一些經驗可以為你的問題提供答案。
常規辦法:
1)刪除不必要的數據和無用的ACCESS資料庫對象例如表、查詢、窗體和模塊等;
2)壓縮資料庫
ACCESS2003壓縮舉例:打開資料庫,點擊菜單(工具)——資料庫實用工具——壓縮和修復資料庫
非常規辦法:
ACCESS資料庫經過一段時間添加、更改和刪除資料庫對象後會產生很多代碼及資料庫對象碎片和垃圾,對於這些東西常規辦法是無法清除的。這也是為什麼你的ACCESS數據刪除很多數據後,大小不變的原因所在。
怎麼辦呢?可以這樣做:先建立一個同名空白資料庫,放在另一個文件夾下,接著打開該空白資料庫,導入原資料庫全部有用的對象(包括:表、窗體、查詢、模塊、頁、宏,無用的不要導入)
ACCESS2003導入對象舉例:文件——獲取外部數據——導入 ,打開「導入」對話框選擇需要縮小的資料庫後,點擊導入按鈕,打開「導入對象」對話框 選擇全部有用的資料庫對象,例如表、窗體等等後點擊「確定」按鈕 完成導入全部資料庫對象。
經過上述過程後,所有的資料庫垃圾都會被清除掉。再對其進行一次壓縮操作,ACCESS資料庫將會處在理論上最小狀態。
6. access資料庫多大合適
25M對於access已經不小了,
ACCESS的缺點
ACCESS是小型資料庫,既然是小型就有他根本的局限性,以下幾種情況下資料庫基本上會吃不消:
1.資料庫過大,一般ACCESS資料庫達到50M左右的時候性能會急劇下降!
2.網站訪問頻繁,經常達到100人左右的在線。
3.記錄數過多,一般記錄數達到10萬條左右的時候性能就會急劇下降!
7. 伺服器上的Access 資料庫體積過大,怎麼辦
進行分割, 例如當文件超過5兆的時候, 就不要再往裡面寫數據了, 然後新建一個, 很多用ACCESS的論壇都是這么做的, 技術應該是很成熟的, 你可以找個論壇的代碼來參考一下 但是,還是換成高級一點的資料庫比較好, ACCESS只是微軟為入門級的家庭用戶開發的資料庫