隨著時間,大部分的資料庫應用程式會成長、變得更複雜,而且需要支援更多使用者。 在 Microsoft Office Access 應用程式生命週期的某一時間點,您可能會想要考慮將應用程式升級至 Microsoft SQL Server 資料庫,以優化效果、擴充性、可用性、安全性、可靠性及可復原性。
本文內容
關於調整 Microsoft Office Access 資料庫的大小
向上調整是一個程式,將部分或所有 資料庫物件 從 Access 資料庫移移至新的或現有的 SQL Server 資料庫或新的 Access 專案 (.adp) 。
將資料庫放大為 SQL Server 的好處
-
高績效和擴充性 在許多情況下,SQL Server 比 Access 資料庫提供更佳的績效。 SQL Server 也支援非常大型、1 TB 大小的資料庫,這遠大於 Access 資料庫 2 GB 的目前限制。 最後,SQL Server 可同時處理查詢 (在單一處理程式內使用多個原生執行緒來處理使用者要求) 並將新增更多使用者時的額外記憶體需求最小化,以更有效率地運作。
-
提高可用性 SQL Server 可讓您在資料庫使用期間進行動態備份,無論是增量備份或完整備份。 因此,您不需要強制使用者離開資料庫,即可備份資料。
-
提升安全性 使用信任的連接,SQL Server 可以與 Windows 系統安全性整合,以提供單一整合式存取網路和資料庫,同時採用這兩種安全性系統的最佳功能。 這可更輕鬆地管理複雜的安全性結構。
-
立即可復原性 如果系統失敗 (例如作業系統當機或電源中斷) ,SQL Server 有一種自動復原機制,只要幾分鐘的時間,資料庫就恢復為最後一致的狀態,而不需要資料庫系統管理員介入。
-
伺服器端處理 在用戶端/伺服器組配置中使用 SQL Server 可先在伺服器上處理資料庫查詢,再將結果傳送給用戶端,以減少網路流量。 讓伺服器執行處理通常會更有效率,尤其是在處理大型資料集時。
您的應用程式也可以使用使用者定義函數、儲存的程式及觸發程式,以集中及共用應用程式邏輯、商務規則和原則、複雜的查詢、資料驗證,以及伺服器上而非用戶端上的參考完整性程式碼。
放大的方法
放大精靈會將資料庫物件及其包含的資料從 Access 資料庫移至新的或現有的 SQL Server 資料庫。
使用向上調整精靈的方法有三種:
-
將 Access 資料庫的所有資料庫物件向上放大至 Access 專案,以便建立用戶端/伺服器應用程式。 這個方法需要一些額外的應用程式變更及修改程式碼和複雜的查詢。
-
僅將資料或資料定義從 Access 資料庫向上放大至 SQL Server 資料庫。
-
在 SQL Server 資料庫後端建立 Access 資料庫前端,以便建立 前端或後端資料庫應用程式。 這個方法只需要很少的應用程式修改,因為程式碼仍在使用 Access 資料庫引擎或 ACE (ACE) 。
在放大 Access 資料庫之前
將 Access 資料庫向上放大至 SQL Server 資料庫或 Access 專案之前,請考慮執行下列操作:
-
備份資料庫 雖然放大精靈不會從 Access 資料庫移除任何資料或資料庫物件,但建議先建立 Access 資料庫的備份副本,再將其放大。
-
確保您有足夠的磁碟空間 您必須在裝置上有足夠的磁碟空間,以包含向上化資料庫。 當有大量的磁碟空間可用時,調整大小精靈效果最佳。
-
建立唯一索引 連結資料表必須具有唯一索引,以在 Access 中更新。 放大精靈可以放大現有的唯一索引,但無法建立不存在的索引。 如果您想要能夠更新資料表,請務必先在每個 Access 資料表中新增唯一索引,再放大。
-
在 SQL Server 資料庫上為自己指派適當的許可權
-
若要升級至現有的資料庫,您需要 CREATE TABLE 和 CREATE DEFAULT 許可權。
-
若要建立新資料庫,您需要在主資料庫的系統資料表上建立資料庫許可權,以及 SELECT 許可權。
-
Access 2007 向上調整精靈已優化,可與 Microsoft SQL Server 2000 和 SQL Server 2005 一起使用。
使用調整大小精靈
-
在 [資料庫工具>鍵的 [移動資料> 群組中,按一下SQL Server。
調整大小精靈會啟動。
步驟 1:選擇向上升級至現有資料庫或新資料庫
在精靈的第一頁上,您可以指定是否要將 Access 資料庫放大至現有的 SQL Server 資料庫,或建立新 SQL Server 資料庫。
-
使用現有的資料庫 如果您選取此選項,然後按一下[下一步,Access會顯示選取資料來源對話方塊,如此一來,您即可建立與現有 SQL Server 資料庫的 ODBC 連接。
關於 ODBC 資料來源
資料來源是一種資料來源,結合存取該資料所需的連接資訊。 資料來源的範例包括 Access、SQL Server、Oracle RDBMS、試算表和文字檔。 而連線資訊則包括伺服器位置、資料庫名稱、登入識別碼、密碼,以及各種描述如何連線至資料來源的 ODBC 驅動程式選項。
在 ODBC 架構中,應用程式 (例如 Access 或 Microsoft Visual Basic 程式) 會連接到 ODBC 驅動程式管理員,而 ODBC 驅動程式管理員則使用特定的 ODBC 驅動程式 (例如 Microsoft SQL ODBC 驅動程式) 來連接到資料來源 (在此案例中是 SQL Server 資料庫) 。 在 Access 中,您可以使用 ODBC 資料來源來連線至沒有內建驅動程式的 Access 外部資料來源。
若要連線到這些資料來源,您必須執行下列動作:
-
在電腦上安裝包含該資料來源的合適 ODBC 驅動程式。
-
定義資料來源名稱 (DSN),方法是使用 [ODBC 資料來源管理員] 將連線資訊儲存在 Microsoft Windows 登錄或 DSN 檔案中,或是使用 Visual Basic 程式碼中的連接字串直接將連線資訊傳給 ODBC 驅動程式管理員。
機器資料來源
機器資料來源會以使用者定義的名稱,將連接資訊儲存在 Windows 登錄的特定電腦上。 您只能在定義該資訊的電腦上使用該機器資料來源。 機器資料來源分為使用者和系統兩種。 使用者資料來源僅可由目前的使用者使用,並且只有該使用者看得到。 系統資料來源則可由電腦上的所有使用者使用,且所有使用者以及系統全域服務都能看到。 由於機器資料來源只有登入的使用者可以檢視,且無法由遠端使用者複製到另一部電腦,所以機器資料來源在您想要提供更高安全性時會特別實用。
檔案資料來源
檔案資料來源 (又稱 DSN 檔案) 會將連線資訊儲存在文字檔案而非 Windows 登錄中,使用起來會比機器資料來源更有彈性。 例如,您可以將檔案資料來源複製到具有正確 ODBC 驅動程式的任何電腦,讓您的應用程式可以仰賴一致且正確的連接資訊到它使用的所有電腦。 或者,您可以將檔案資料來源置於單一伺服器,然後在網路上的多部電腦間共用,就能輕易地在單一位置維護連線資訊。
檔案資料來源也可以是不可共用的。 無法共用的檔案資料來源位於單一電腦上,並指向電腦資料來源。 您可以使用不可共用的檔案資料來源,以從其中存取現有的機器資料來源。
連接字串
您可以在模組中定義指定連線資訊的格式化連接字串。 連接字串會將連接資訊直接傳遞至 ODBC 驅動程式管理員,這有助於簡化您的應用程式,免去系統管理員或使用者在使用資料庫之前先建立 DSN 的需求。
-
-
建立新資料庫 如果您選取此選項,然後按一下 [下一步,Access 會顯示一個頁面,您可以在其中輸入新 SQL Server 資料庫的資訊。
-
此資料庫要使用什麼 SQL Server? 輸入您喜歡使用的伺服器名稱。
-
使用信任的關聯 您可以使用信任的連接,也就是說,SQL Server 可以與 Windows 作業系統安全性整合,以提供單一登入至網路和資料庫。
-
登入識別碼和密碼 如果您不使用信任的連接,請在伺服器上輸入具有 CREATE DATABASE 許可權之帳戶的登入識別碼和密碼。
-
您想要為新的 SQL Server 資料庫命名什麼? 輸入新 SQL Server 資料庫的名稱。 如果名稱與現有的資料庫名稱衝突,Access 會修改名稱,並新增編號尾碼 (mydatabase 1,例如) 。
-
步驟 2:選擇要放大的資料表
在此步驟中,您選取要向上放大至 SQL Server 資料庫的 Access 資料表。 選取要放大的資料表,然後使用箭頭按鈕將它們移至 匯出至 SQL Server 清單。 或者,您可以按兩下資料表,將表格從一個清單移到另一個清單。
可用的 資料表 清單包含所有連結資料表,SQL Server 資料庫中已有的 SQL Server 資料表除外。 指向已選取調整大小之 SQL Server 資料庫的連結資料表會自動出現在匯出 至 SQL Server 清單方塊中,且無法移除。 目前未顯示在資料表中的 瀏覽窗格 也會排除,包括隱藏的資料表和系統資料表。
提示: 名稱結尾為 "_local" 的任何資料表會從可用資料表清單中排除,以避免將已向上調整的資料表放大。 如果您想要再次調整這些資料表大小,請移除後稱「_local」,然後再執行向上調整精靈。
步驟 3:指定要放大的屬性和選項
在此步驟中,選取要向上放大至 SQL Server 資料庫的資料表屬性。 根據預設,所有屬性預設會選取為放大。
附註: 根據預設,向上調整精靈會將 Access 功能變數名稱轉換為合法的 SQL Server 功能變數名稱,並將 Access 資料類型轉換為相等的 SQL Server 資料類型。
您想要放大哪些資料表屬性?
下表列出您可以向上調整的屬性,並說明向上調整精靈如何處理每個屬性:
屬性 |
已選取動作 |
|||||||||||||||
索引 |
放大精靈會放大所有索引。 向上調整精靈會將 Access 主鍵轉換為 SQL Server 索引,並將索引標記為 SQL Server 主鍵。 如果您選擇將向上調整的 SQL Server 資料表連結至 Access 資料庫,Upsizing 精靈也會在索引名稱中加上首碼 "aaaaa"。 這是因為 Access 會選擇可用索引清單中第一個按字母順序排列的索引做為主鍵,而 "aaaaa" 首碼可確保選擇正確的索引。 所有其他索引會保留其名稱,但以 "_" 字元取代不法字元除外。 唯一和非唯一的 Access 索引會變成唯一和非唯一的 SQL Server 索引。 連結資料表必須具有唯一索引,以在 Access 中更新。 放大精靈可以放大現有的唯一索引,但無法建立不存在的索引。 如果您想要在調整資料表大小之後,能夠更新資料表中的資料,請確定在每個 Access 資料表中新增唯一索引,再進行放大。 |
|||||||||||||||
驗證規則 |
[放大精靈> 將下列專案放大為更新和插入觸發程式:
觸發器是一系列與 SQL Server 資料表相關聯的 Transact-SQL 語句。 資料表可以有三個觸發程式,每個可以修改資料表中的資料的命令各有一個:UPDATE、INSERT 和 DELETE 命令。 執行命令時,會自動執行觸發程式。 向上調整精靈會使用觸發程式而非 SQL Server 規則來強制執列欄位層級驗證,因為 SQL Server 規則不允許您顯示自訂錯誤訊息。 每個驗證規則不一定都有觸發程式一對一的對應。 每個驗證規則可能會成為數個觸發程式一部分,而每個觸發程式可能包含模擬數個驗證規則功能的代碼。 當您將 Access欄位的 Required 屬性設為 True 時,如果使用者沒有與欄位) 的預設綁定,使用者就無法插入記錄並保留必要的欄位 Null (或在更新記錄時將欄位設為 Null。 必要的欄位會向上調整為不允許 SQL Server 上 Null 值的欄位。 驗證文字 Access 資料庫 驗證文字 屬性會轉換為 Access 專案 驗證文字 屬性。 這可讓 Access 操作錯誤訊息在執行時間發生限制衝突時顯示。 |
|||||||||||||||
違約 |
向上調整精靈會將所有預設值屬性向上調整為美國國家標準學會 (ANSI) 物件。 |
|||||||||||||||
資料表關聯 |
向上調整精靈會放大所有資料表關係。 您可以決定如何使用更新、插入或刪除觸發程式,或是使用宣告參考完整性來向上化資料表 (參考完整性) 。 根據基本資料表定義主鍵限制式 (一對多關聯性) 的「一」端,以及外鍵限制式 (通常是一對多關聯性) 的「多」端,因此,DRI 運作方式與 Access 參考完整性相同。
|
您想要包含哪些資料選項?
-
新增時間戳記欄位至資料表 SQL Server 會使用時間戳欄位來表示已變更記錄 (但變更記錄時) 建立唯一值欄位,然後在更新記錄時更新此欄位。 對於連結資料表,Access 會使用時間戳欄位中的值來判斷記錄是否已變更,然後再更新記錄。 一般而言,時間戳記欄位提供最佳的績效與可靠性。 若沒有時間戳記欄位,SQL Server 必須檢查記錄中所有的欄位,以判斷記錄是否變更,這會降低執行速度。
下表說明此清單提供的設定:
設定 |
描述 |
是,讓精靈決定 |
如果原始 Access 資料表包含浮點 (單一或雙) 、備忘或 OLE 物件 欄位,則向上調整精靈會為這些欄位在產生的 SQL Server 資料表中建立新的時間戳記欄位。 |
是,永遠 |
無論資料表包含何種欄位類型,放大精靈都會針對所有向上調整的資料表建立時間戳記欄位。 這會改善可能不包含備忘、OLE 物件或浮點欄位,但具有其他類型欄位的放大 Access 資料表的績效。 |
否,永不 |
放大精靈不會在資料表中新增時間戳記欄位。 |
重要: 在連結的 SQL Server 資料表中,Access 不會檢查是否變更了 Memo 或 OLE 物件欄位,因為這些欄位的大小可能很多,而且比較可能會耗用網路耗用太多時間。 因此,如果只有文字或影像欄位已變更,而且沒有時間戳記欄位,Access 會覆寫變更。 此外,浮點域的值在尚未變更時可能顯示為已變更,因此如果沒有時間戳記欄位,Access 可能會判斷該記錄在尚未變更時已經變更。
-
只建立資料表結構,不放大任何資料 根據預設,放大精靈會將所有資料放大至 SQL Server。 如果您選取了 唯一建立資料表結構 ,請勿將任何資料核取方塊放大,只會放大資料結構。
步驟 4:選擇如何放大您的應用程式
在精靈的下一個頁面上,您可以選取三種不同的方法之一,將 Access 資料庫應用程式向上化。 在 您想要進行哪些應用程式變更?選取下列其中一個選項:
-
建立新的 Access 用戶端/伺服器應用程式 如果您選取此選項,放大精靈會建立一個新的 Access 專案。 向上調整精靈會提示您輸入名稱 ,此名稱會預設為目前的 Access 資料庫名稱,並新增 "CS" 尾碼,然後將專案儲存到與現有 Access 資料庫相同的位置。
放大精靈會建立 Access 專案檔案,然後將 Access 資料庫的所有資料庫物件向上調整為 Access 專案。 如果您沒有儲存密碼和使用者識別碼,那麼當您第一次開啟 Access 專案時,Access 會顯示 [資料 連結屬性 > 對話方塊,好方便您連接到 SQL Server 資料庫。
-
將 SQL Server 資料表連結至現有應用程式 如果您選取此選項,則向上調整精靈會修改您的 Access 資料庫,讓查詢、表單、報表和資料存取頁面使用新 SQL Server 資料庫中的資料,而不是 Access 資料庫中的資料。 「向上調整精靈」會以「_local」為尾碼重新命名您放大的 Access 資料表。 例如,如果您將名為 Employees 的資料表放大,資料表會重新Employees_local Access 資料庫中的資料表。 然後,向上調整精靈會建立名為 Employees 的連結 SQL Server 資料表。
附註: 放大作業完成之後,將不再使用以 "_local" 尾碼重新命名的資料表。 不過,建議保留本地資料表,直到您確認調整成功。 之後,您可以刪除本地資料表,以縮減 Access 資料庫的大小。 刪除任何資料表之前,請務必備份資料庫。
根據原始員工資料表的查詢、表單、報表和資料存取頁面現在會使用連結的 SQL Server Employees 資料表。 原始本地資料表中的許多欄位屬性是由新的本地資料表繼承,包括描述、標題、格式、InputMask和DecimalPlaces。
-
沒有應用程式變更 如果您只想將資料複製到 SQL Server 資料庫,而不想對現有 Access 資料庫應用程式進行任何其他變更,請選取此選項。
儲存密碼和使用者識別碼 根據預設,向上調整精靈會建立現有應用程式中的連結資料表,或建立 Access 專案而不存使用者名稱和密碼。 這表示每次使用者登入 SQL Server 資料庫時,系統會提示使用者輸入使用者名稱和密碼。
如果您選取了 儲存密碼和使用者識別碼,使用者不需要登陸就可以連接到 SQL Server 資料庫。 如果您選取 建立新 Access 用戶端/伺服器應用程式,Access 專案會將使用者名稱密碼儲存在 OLE DB 連接字串中。
附註: 如果連結的 SQL Server資料表已使用MSysConf資料表來拒絕密碼的預存,此選項會針對不變更應用程式選項停用。
調整大小精靈報表
當您按一下 [ 完成時,向上調整精靈會建立一份報表,其中提供所有已建立物件的詳細描述,並報告程式期間遇到的任何錯誤。 調整精靈會在預覽列印中顯示報表,然後您可以列印或儲存報表,例如 XPS 或 PDF 檔案。 當您關閉預覽列印視窗時,報表不會儲存為 Access 物件。
調整精靈報表包含下列相關資訊:
-
調整參數大小,包括您選擇要放大的表格屬性,以及您的放大方法。
-
資料表資訊,包括名稱、資料類型、索引、驗證規則、預設值、觸發程式,以及是否已新增時間戳記的 Access 和 SQL Server 值比較。
-
遇到任何錯誤,例如資料庫或交易記錄已滿、許可權不足、裝置或資料庫未建立、資料表、預設或驗證規則已略過、未強制執行關係、查詢略過 (,因為它無法轉換成 SQL Server 語法) ,以及表單和報告中的 控制項 和 記錄來源 轉換錯誤。
資料庫物件如何放大
下列資料和資料庫物件會向上放大:
-
資料和資料類型 所有 Access 資料庫資料類型在 SQL Server 中會轉換為其等同類型。 精靈會將 Access 資料庫文字轉換成 Unicode,將 Unicode 字串識別碼新增到所有字串值,並將 Unicode n 首碼新增到所有資料類型。
-
查詢
-
選取沒有 ORDER BY 子句或參數的查詢會轉換為視圖。
-
動作查詢會轉換成儲存的程式動作查詢。 Access 在參數宣告程式碼之後新增 SET NOCOUNT ON,以確保執行儲存的程式。
-
選取僅參照資料表的 (也稱為基本查詢) 參數或 ORDER BY 子句的查詢會轉換為使用者定義函數。 如有需要,TOP 100 PERCENT 子句會新增到包含 ORDER BY 子句的查詢。
-
使用已具名引數的參數查詢會維護 Access 資料庫中使用的原始文字名稱,並轉換成儲存程式或內嵌使用者定義函數。
附註: 您可能需要手動轉換未向上調整的查詢,例如 SQL 傳遞查詢、資料定義查詢和交叉資料表查詢。 您可能還必須手動將巢式過於深的查詢向上調整。
-
-
表單、報表及控制項 用於表單、報表或控制項的 RecordSource、ControlsSource和RowSource屬性中的 SQL 語句會保留就地,而且不會轉換成儲存的程式或使用者定義函數。
-
啟動屬性 放大精靈會放大下列啟動屬性:
StartUpShowDBWindow
StartUpShowStatusBar AllowShortcutMenus AllowFullMenus AllowBuiltInToolbars AllowToolbarChanges AllowSialKeys UseAppIconForFrmRpt AppIcon AppTitle StartUpForm StartUpMenubar StartupShortcutMenuBar -
模組和宏 放大精靈不會對模組或宏進行任何變更。 您可能需要修改您的應用程式,以充分利用 SQL Server 的功能。 若要取得詳細資訊,請參閱 MSDN 文章: 優化連結至 SQL Server 的 Microsoft Office Access 應用程式。