明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

在頁面上進(jìn)行Access數(shù)據(jù)庫壓縮

[摘要]多年前給客戶做的數(shù)據(jù)庫,用得是 access,已經(jīng)兩年,長得非常大,有 1G 這么大。隨著您不斷添加、更新數(shù)據(jù)以及更改數(shù)據(jù)庫設(shè)計,數(shù)據(jù)庫文件會變得越來越大。導(dǎo)致增大的因素不僅包括新數(shù)據(jù),隨著數(shù)據(jù)庫...

   多年前給客戶做的數(shù)據(jù)庫,用得是 access,已經(jīng)兩年,長得非常大,有 1G 這么大。隨著您不斷添加、更新數(shù)據(jù)以及更改數(shù)據(jù)庫設(shè)計,數(shù)據(jù)庫文件會變得越來越大。導(dǎo)致增大的因素不僅包括新數(shù)據(jù),隨著數(shù)據(jù)庫文件不斷被遺留的臨時對象和已刪除對象所填充,其性能也會逐漸降低。其癥狀包括:對象可能打開得更慢,查詢可能比正常情況下運行的時間更長,各種典型操作通常似乎也需要使用更長時間。

  所以對access數(shù)據(jù)庫進(jìn)行壓縮也是勢在必行。

  實在是會擔(dān)心,如果不小心壞了,那可是救都救不回來。還好,備份一個 access 的數(shù)據(jù)庫非常簡單,就把那個檔案復(fù)制一份,就解決了。甚至,還可以寫一個 aspx 網(wǎng)頁,來執(zhí)行這個動作,讓我在任何地方,只要有網(wǎng)絡(luò),就可以用網(wǎng)頁來做備份,就算我用 iPad,iPhone,Android手機都可以。雖然是小題大作,一年不過做個兩、三次的事,但是,若能夠不讓客戶擔(dān)心的情況下,做完這些保險的事,也會有讓他們信任的感受。就算不是計算機自動化地來做,至少也是我自動地做,也算是自動化了啊!

  但是,只有備份,仍然不夠,備份只解決了失效復(fù)原的第一步。接下來面臨的是舊數(shù)據(jù)越來越多,如果不刪除,檔案越來越大,查詢的時間越來越長,真的是無謂的浪費時間。所以,接下來完成了刪除舊數(shù)據(jù)的功能。但是,這又產(chǎn)生一個不滿足。雖然,數(shù)據(jù)刪了,查詢速度又回復(fù)以往的快速,但是,數(shù)據(jù)文件的大小,仍然維持一樣。著實想想真是不開心。

  使用 office access,可以把 mdb 打開,然后在「主功能(左上的窗口)」->「管理」->「壓縮及修復(fù)數(shù)據(jù)庫」這個功能,把數(shù)據(jù)庫壓縮。

在網(wǎng)頁上進(jìn)行Access數(shù)據(jù)庫壓縮 本文

  這么做,就需要人工來做。并且要準(zhǔn)備一臺裝有 MS access 的計算機才行。

  當(dāng)然這工作,用指令也行,但還是要在裝有 MS access 的計算機執(zhí)行指令,然后用工作排程器執(zhí)行(參考)。

  C:Program Files (x86)Microsoft OfficeOffice12MSACCESS.EXE c:Northwind.mdb /compact

  這種若要想用網(wǎng)頁執(zhí)行,則會因為某種限制而無法執(zhí)行。猜測主要是因為 MSACCESS.exe 是桌面程序。執(zhí)行后就卡住,沒有把工作做完。這應(yīng)該只是設(shè)定的問題,因為在開發(fā)環(huán)境是可以正常使用。但是在 IIS 的環(huán)境,就是卡住。有人提醒 service 程序也許不能與桌面互動而導(dǎo)致問題(參考)。我試過這方法也是失敗。我們以前嘗試過,如果是 console 程序,是可以的執(zhí)行成功的。

  為了堅持要用網(wǎng)頁執(zhí)行,尋找許久,在微軟的開發(fā)環(huán)境里,都會安裝一個 dao。它只是一個 dll。只要把 dao.dll 復(fù)制一份在 bin 里面,然后引用它。只要用兩行就搞定了。

  dao.DBEngine dbe = new DBEngine();

  dbe.CompactDatabase(target_uncompact, target_compact, null, null, null);

  如果,老板問,為什么兩行程序要寫快兩個星期,那……,要請曹操的好朋友來回答了。


Microsoft Access在很多地方得到廣泛使用,例如小型企業(yè),大公司的部門。