簡體   English   中英

如何在遠程.mdb文件上運行MS-Access SQL查詢?

[英]How does an MS-Access SQL query run on a remotely located .mdb file?

我試圖了解如何對.mdb文件進行查詢。 假設文件位於共享驅動器PC2上,我從PC1以編程方式打開它。

當我連接到.mdb文件時,我假設在PC2上沒有啟動MS Access的“實例”(因為它是一個簡單的文件服務器)。 這個對嗎?

當我進行SQL查詢時,是否必須在本地復制表,然后運行查詢然后返回我的結果並丟棄表和任何多余的數據?

如果我在查詢中“按順序”會發生什么? 是返回的整個查詢,然后在本地訂購,或以某種方式遠程訂購?

我確定我還有其他問題,但我正在嘗試了解如何從遠程位置連接到MDB文件。 (我找到了一個相當大的延遲,所以一個特定的查詢可能需要9秒,在我的情況下這是不可接受的,我試圖了解這是如何工作的,如果它可以改進)。

在這種情況下我使用c#運行,我不認為這應該會有很大的不同,但可能在您的回復中。

當我連接到.mdb文件時,我假設在[遠程機器]上沒有啟動MS Access的“實例”(因為它是一個簡單的文件服務器)。 這個對嗎?

是。 應用程序將與本地計算機上的Access數據庫引擎的副本進行交互,然后從遠程計算機上的數據庫文件中檢索信息。

當我進行SQL查詢時,是否必須在本地復制表,然后運行查詢然后返回我的結果並丟棄表和任何多余的數據?

不必要。 根據所涉及的表的索引方案,Access數據庫引擎可能只需要檢索相關索引,然后確定數據文件中包含要檢索的記錄的特定頁面。 在某些情況下,它可能需要檢索整個表(例如,當需要進行全表掃描時),但並非總是如此。

如果我在查詢中“按順序”會發生什么? 是返回的整個查詢,然后在本地訂購,或以某種方式遠程訂購?

Access文檔說索引將加快排序操作(參考: 這里 ),表明Access數據庫引擎可以按排序順序從遠程文件中檢索所需的行。

你的直覺是正確的,mdb / mde dbs只是美化的文本文件,必須在本地處理。 以下是有關網絡性能的一些提示: http//www.granite.ab.ca/access/performancefaq.htm

但由於SQL Server Express是免費的,因此幾乎沒有理由不遷移,特別是因為Access有一個工具來管理它。 在低容量多用戶環境(例如2-10)中,MS Access可以正常工作,但對於以任何可能的方式提供更多用戶和/或交易的企業解決方案,您都會遇到災難。

加上戈德的回答......

通過Windows文件頁鎖訪問Access數據庫。 我的理解是,Microsoft將此頁面鎖定專門用於MS Access(但也可通過Windows API用於任何文件)。

由於實例是本地的,並且通過文件頁鎖來處理沖突和沖突,因此客戶端 - 服務器爭用是一個問題。 訪問在這里已知問題。 這就是為什么我應該盡可能切換到SQL Server Express(也是免費的)。 但是,是的,MS Access具有一定的便利性; SSE具有更大的占地面積和更不友好的GUI

所有桌面數據庫都有客戶端/服務器問題 戈德的回答符合我的知識。 索引的要點是減少需要在本地提取的表數據量。 與表數據相比,拉索引是一項相對較小的任務。 這是標准的索引優化,雖然我認為由於遠程數據和文件分頁,它對於桌面數據庫來說更為重要。

通常,Access(JET)引擎無需遠程操作。 它是所有文件數據,並在本地MSA / Jet引擎中本地執行。 您知道這一點,因為引擎是本地安裝的,不必安裝在文件主機上。 然而,它是分散處理負荷的方便快捷和方便的方式。 :)

暫無
暫無

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

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