簡體   English   中英

MS Access數據庫的自動壓縮和修復

[英]Automatic Compact and Repair of MS Access Database

我們有一個基於MS Access的系統,該系統依賴於存儲在聯網MS Access數據庫中的后端數據。 有時,當出現隨機網絡問題時,這些數據庫會損壞。 因此,我們認為我們應該添加某種可以常規觸發緊湊型結構並進行修復的過程。

問題在於該數據庫一直由多個用戶使用,並且不能保證知道不使用該數據庫時一定的時間可用。 因此,我的問題如下。

1)如果在前端應用程序(MS Access或.NET)嘗試連接數據庫時正在對數據庫進行c / r操作,將會發生什么? 這可以嗎?

2)SO建議什么作為使前端應用程序全部等到后端MS Access數據庫准備好使用的良好解決方案? 前端應用所需的更改越少越好。

謝謝!

這是Access開發人員中相對經常提出的問題。

它包括兩個部分:

  1. 用於備份和壓縮數據庫的代碼,您已在服務器上計划了該代碼。

  2. 您放置在前端的代碼可以一次自動注銷所有人,從而允許#1中的代碼運行。

通常,辦公室僅在當地時間上午8點至下午6點開放,因此通常可以安全地將所有人趕出午夜,以便后端可以在凌晨1點進行備份和壓縮,以准備常規文件服務器備份,例如可能發生在凌晨2點。

用於備份/壓縮的VBScript相對容易編寫。 如果您需要幫助,請詢問。

對於前端,您需要具有一個隱藏的窗體,該窗體會在打開帶有計時器的應用程序時打開,該計時器設置為在午夜啟動並關閉該應用程序。 您要如何精打細算取決於具體情況。 潛在的陷阱可能是用戶已經開始記錄並且處於無法保存的狀態(由於某些原因而導致驗證規則失敗)。 這可能很復雜(您必須捕獲錯誤,撤消樹樁記錄,然后才能關閉),但是最好對應用程序進行工程設計,以使用戶永遠無法創建無法保存的記錄。

關鍵是您必須計划這兩個方面,即計划和關閉計划運行備份/壓縮時保留的所有連接。

據我了解,讓它自動壓縮數據庫是一個壞主意。 如果在壓縮之前存在可恢復的錯誤,那么您可能最終會得到一個完全無法讀取的數據庫-需要從備份中還原。

1>如果前端嘗試訪問正在壓縮/修復的數據庫,我相信前端客戶端會被告知該數據庫不可用並且被意外彈出。 我相信您可以為此編寫一個錯誤處理程序,但這需要比我所提供的更多的VBA知識。

2>如果有可能,與多個客戶端打交道時,即使在備用Windows機器上使用Microsoft SQL Server Express,后端上的RDBMS也會始終表現更好。 發生“壞事”(網絡斷開連接,客戶端鎖定等)時,數據將更有可能不被損壞。 具有事務的RDBMS通常是一個很好的途徑。

關於此問題的解決方案,恐怕我在程序上缺乏想法。 抱歉。

Garry Robinson的有關訪問安全性的書解決了這個問題。 值得一讀。 在Garry的網站(vb123.com)上,他出售了一個工具箱,其中包含許多管理和安全工具,其中包括向每個連接的工作站發出警告的工具箱,然后在幾秒鍾后關閉前端。

這本書是:

現實世界中的Microsoft Access數據庫保護和安全性

如果您在公司環境中使用Access,則必須閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM