引言
當對企業(yè)級的高性能的數(shù)據(jù)庫的要求和需求增加時,客戶有時需要從文件棗服務(wù)器環(huán)境的Microsoft Access Jet引擎遷移到客戶棗服務(wù)器環(huán)境的Microsoft SQL Server。隨同微軟Office 2000發(fā)行的Access 2000 Upsizing Wizard(升級向?qū)В┛梢园袮ccess表格和查詢遷移到SQL Server 7.0。如果你使用Access的早期版本,你也可以通過升級到Access 2000,并使用升級向?qū)О涯愕膽?yīng)用程序移植到SQL SERVER。
如果你不喜歡使用Access 2000和升級向?qū)нM行移植,那么這篇文章作為向遷移一個Access應(yīng)用程序到SQL Server。要遷移Access應(yīng)用程序,你需要首先把數(shù)據(jù)遷移到SQL Server 7.0,然后把Access查詢移植到數(shù)據(jù)庫或SQL文件,最后是移植應(yīng)用程序。
●移植中使用的SQL Server工具
SQL Server中的一些工具可以幫助你移植Access數(shù)據(jù)和應(yīng)用程序
*SQL Server企業(yè)管理器
SQL Server企業(yè)管理器允許對SQL Server和SQL Server對象的企業(yè)范圍的設(shè)置和管理。SQL Server企業(yè)管理器提供了一個強大的任務(wù)安排引擎、管理警告能力、以及內(nèi)建的復(fù)制管理界面。你還可以用SQL Server企業(yè)管理器來:
管理登錄和用戶權(quán)限
創(chuàng)建腳本
管理SQL SERVER對象的備份
備份數(shù)據(jù)庫和事務(wù)日志
管理表、視圖、存儲過程、觸發(fā)器、索引、規(guī)則、缺省設(shè)定和自定義數(shù)據(jù)類型
創(chuàng)建全文索引、數(shù)據(jù)庫圖表和數(shù)據(jù)庫維護方案
輸入輸出數(shù)據(jù)
轉(zhuǎn)換數(shù)據(jù)
執(zhí)行不同的Web網(wǎng)絡(luò)管理任務(wù)
缺省情況下,SQL Server企業(yè)管理器被SQL Server作為服務(wù)器軟件的一部分安裝在運行Windows NT操作系統(tǒng)的計算機上,同時作為客戶軟件的一部分安裝在運行Windows NT和Windows 95操作系統(tǒng)的計算機上。你很可能要從SQL Server企業(yè)管理器的圖形用戶界面啟動數(shù)據(jù)轉(zhuǎn)換服務(wù)(Data Transformation Services,DTS)。
數(shù)據(jù)轉(zhuǎn)換服務(wù)(DTS)
數(shù)據(jù)轉(zhuǎn)換服務(wù)允許你在使用一個OLE DB結(jié)構(gòu)的多個數(shù)據(jù)源之間輸入和輸出數(shù)據(jù),這樣的數(shù)據(jù)源有Microsoft Excel電子表格,以及在運行SQL Server 7.0的多臺計算機之間執(zhí)行數(shù)據(jù)庫和數(shù)據(jù)庫對象的傳輸。你還可以用DTS來執(zhí)行數(shù)據(jù)轉(zhuǎn)換,以便用它來通過一個在線事務(wù)處理系統(tǒng)建立數(shù)據(jù)倉庫和數(shù)據(jù)商場。
DTS向?qū)г试S你交互的創(chuàng)建使用OLE DB和ODBC來進行輸入、輸出、確認和不同數(shù)據(jù)的轉(zhuǎn)換的DTS包。向?qū)н允許你在相關(guān)數(shù)據(jù)庫之間拷貝計劃和數(shù)據(jù)。
SQL SERVER查詢分析器(Server Query Analyzer)
SQL SERVER查詢分析器是一個圖形化查詢工具,它允許你可視化的分析一個查詢方案,同時執(zhí)行多重查詢、查看數(shù)據(jù)、獲得索引建議。SQL Server查詢分析器提供顯示方案(showplan)選項,可以用它來報告SQL Server查詢優(yōu)化器選擇的數(shù)據(jù)獲取方案。
SQL Server輪廓(Server Profiler)
SQL SERVER輪廓實時捕捉服務(wù)器活動的連續(xù)的記錄。SQL Server輪廓允許你監(jiān)控通過SQL Server產(chǎn)生的事件,過濾基于用戶指定準則的事件和直接跟蹤到顯示器、文件或者表的輸出。使用SQL Server輪廓,你可以重放先前的捕捉記錄。這個工具幫助應(yīng)用程序開發(fā)人員鑒別可能使應(yīng)用程序性能惡化的事務(wù)。當從一個基于文件的體系結(jié)構(gòu)移植一個應(yīng)用程序到一個基于客戶/服務(wù)器的體系結(jié)構(gòu)時,它是很有幫助的,因為最后的步驟包含針對應(yīng)用程序的新客戶/服務(wù)器環(huán)境優(yōu)化該應(yīng)用程序的操作。
移動表格和數(shù)據(jù)
使用DTS向?qū)нw移你的Access數(shù)據(jù)到SQL Server,你可以使用這些步驟:
在SQL SERVER企業(yè)管理器中的Tools(工具)菜單上,選擇Data Transformation Services(數(shù)據(jù)轉(zhuǎn)換服務(wù)),然后選擇Import Data(導(dǎo)入數(shù)據(jù))。
在Choose a Data Source(選擇數(shù)據(jù)源)對話框中選擇Microsoft Access as the Source,然后鍵入你的.mdb數(shù)據(jù)庫(.mdb文件擴展名)的文件名或通過瀏覽尋找該文件。
在Choose a Destination(選擇目標)對話框中,選擇Microsoft OLE DB Provider for SQL Server,選擇數(shù)據(jù)庫服務(wù)器,然后單擊必要的驗證方式。
在Specify Table Copy(指定表格復(fù)制)或Query(查詢)對話框中,單擊Copy tables(復(fù)制表格)。
在Select Source Tables(選擇源表格)對話框中,單擊Select All(全部選定)。
移植Microsoft Access查詢
你必須以這些格式之一遷移你現(xiàn)有的Access查詢到SQL Server:
Transact-SQL腳本
Transact-SQL語句通常從數(shù)據(jù)庫程序被調(diào)用,但是你可以使用包含在SQL Server 7.0中的SQL Server查詢分析器在數(shù)據(jù)庫中直接運行它們。SQL Server查詢分析器幫助開發(fā)者針對開發(fā)數(shù)據(jù)庫測試Transact-SQL語句,或運行Transact-SQL語句執(zhí)行查詢、數(shù)據(jù)操作(INSERT、UPDATE、DELETE)或數(shù)據(jù)定義(CREATE TABLE)。
存儲過程
開發(fā)者可以把大多數(shù)源于Access查詢(SELECT、INSERT、UPDATE 和 DELETE)的Transact-SQL語句轉(zhuǎn)換為存儲過程。用Transact-SQL寫的存儲過程可以用來封裝和標準化你的數(shù)據(jù)訪問,存儲過程實際上存儲在數(shù)據(jù)庫內(nèi)。存儲過程能帶或者不帶參數(shù)運行,可以從數(shù)據(jù)庫程序調(diào)用,也可以從SQL Server查詢分析器手動執(zhí)行。
視圖
視圖作為虛擬的表格從一個或更多的表格顯露指定的行和列。它們允許用戶創(chuàng)建查詢而不用直接實現(xiàn)那些復(fù)雜的底層查詢。視圖不支持參數(shù)。向視圖加入一個更多的表格不能使用INSERT、UPDATE、或DELETE語句修改。視圖可以用Transact-SQL語句調(diào)用,并且也可以在SQL Server查詢分析器中的*.scripts中使用。SQL Server視圖和SQL-92標準不支持視圖中的ORDER BY 子句。
更多關(guān)于Transact-SQL、存儲過程或者視圖的信息,見SQL Server Books Online。
Access查詢類型
SQL Server移植選項和注釋
一個SELECT語句可以被存儲在Transact-SQL文件、存儲過程或者視圖中。
創(chuàng)建存儲過程是實現(xiàn)把數(shù)據(jù)庫應(yīng)用程序開發(fā)同數(shù)據(jù)庫設(shè)計的物理實現(xiàn)分離的最好方法。存儲過程在一個地方創(chuàng)建,并且被應(yīng)用程序調(diào)用。
如果底層數(shù)據(jù)庫改變了,并且存儲過程被仔細的修改以反映這些變化,則對存儲過程的調(diào)用不會被“中斷”。
CROSSTAB
交叉表經(jīng)常用于摘要報告。
Access交叉表可以在SQL腳本中作為Transact-SQL SELECT語句實現(xiàn),也可以作為存儲過程或者一個視圖實現(xiàn)。每次一個查詢被列舉的時候,數(shù)據(jù)節(jié)點將會重執(zhí)行,請確保使用最新的數(shù)據(jù)。
根據(jù)不同的數(shù)據(jù)庫需要,也許把交叉表中的數(shù)據(jù)存儲為臨時表比較合適(請參看下一行的MAKE TABLE)。臨時表只需要很少的資源,但是只提供了創(chuàng)建臨時表的時刻,數(shù)據(jù)的一個照相。
MAKE TABLE
Access的MAKE TABLE可以在Transact-SQL腳本或者存儲過程中作為Transact-SQL的CREATE TABLE語句實現(xiàn)。語法如下:
SELECT [ ALL | DISTINCT ]
[ {TOP integer | TOP integer PERCENT} [ WITH TIES] ]