Performance

遷移 MS Access 應用程序

  • December 5, 2016

我正在為一家小型非技術公司提供諮詢,該公司將其軟體、硬體和支持服務外包給當地的 IT 供應商。這家公司正準備將他們的幾個內部應用程序從內部託管伺服器遷移到基於雲的提供商。

其中一個應用程序是基於MS Access的業務關鍵型庫存管理工具。不幸的是,這個工具是由一個位於海外的人建構和維護的,所以我們希望很少支持任何自定義開發,並且必須將應用程序視為一個黑匣子。

銷售人員目前正在通過 VPN 和虛擬終端訪問內部 Access 應用程序,其連接非常不穩定。此外,該應用程序可能會間歇性地掛起長達半小時,這在他們使用它的 2 年中變得更糟。此云遷移的主要目標之一是解決這些性能/穩定性問題。

最後一點:他們的 IT 提供商希望將Anchor用作雲供應商。

我的問題:我們如何通過“遷移到雲”來最好地解決這些性能問題?

我們發現的“最佳”解決方案是:

  1. 將 Access 表遷移到 SQL 表 2. 將視圖和儲存過程遷移到 SQL 伺服器 3. 使 MS-Access 從網路位置執行。這種方式有兩個 Ms-Access:一個用於開發工作,另一個用於日常使用。這樣 ms-access 可以擴展。

作為這樣做的開發人員,我可以告訴你:

遷移表非常簡單(Access 中甚至還有一個選項)。然後您需要檢查數據類型是否保持應有的方式。SQL 可能會使用比它應該更大的數據大小(貨幣不應該是錢,它應該是十進制 (18,2);如果不需要,請避免使用浮點數;使用盡可能小的數據類型;字元串有正確遷移;等)。另外:當 Access 使用 SQL 作為後端時,它只能將一列作為主鍵,否則無法正確連結。因此,如果您有一個由兩列組成的主鍵,則需要在該表中添加一個標識列。

一旦建立,您就有了一個拆分的 Access 應用程序,這意味著更好的可用性。然而,您需要遷移視圖和儲存過程:基本上將程式碼表單 Access 複製並粘貼到 SQL。由於語法不同,您需要檢查以下缺陷:

(1) 例如,現在 SQL 中有 IIF,以便對這部分進行排序。

(2) 包含在儲存過程中的參數在 SQL 中以不同的語法使用,因此這也是需要注意的事情。

(3) 避免在視圖中使用 ORDER BY。(不要使用 SQL 選項,只是不要使用它並在 Access 中進行排序)

(4) 最後但並非最不重要的一點:在 Access 中“true”為 -1,在 SQL 中為 1。這非常重要檢查 WHERE 子句是否顯示 WHERE flag <> 0,而不是 flag = -1。祝你好運!

引用自:https://dba.stackexchange.com/questions/157164