開發者常常以Access作為原型或者用Access來開發不是很關鍵的應用程序。但是,隨著公司業務的增長,要解決的問題會變得越來越復雜,Access環境可能無法滿足需要。目前,Access 2002的.mdb和.adp文件都將一個數據庫的長度限制在2 GB以內。這意味著幾乎每個Access和SQL Server開發者最終都要將一個Access數據庫升遷成一個SQL Server數據庫。
由于升遷已成為極為常見的一個任務,所以Access配套提供了一個“升遷向導”。它雖然能完成這個工作,但操作過程并不簡單。SQL Server與Access的幾處不兼容的地方是該向導無法處理的。你或許不知道,SQL Server的“數據轉換服務”(Data Transformation Services,DTS)也能升遷一個Access數據庫。下面讓我們比較這兩個向導,并體驗如何使用DTS來升遷一個實際Access數據庫。這樣一來,你在遇到一個升遷任務時,就能選擇最有效的方式。
比較Access升遷向導和DTS
Access升遷向導(AUW)在Access內部工作,能將數據拷貝到SQL Server表。相反,DTS將來自一個Access數據庫的數據拷貝到SQL Server表中。注意,你可將數據從一個文本文件或者一個OLE DB數據源(其中自然包括Access數據庫)導入SQL Server。導入文件的同時,還能對數據進行轉換。
DTS的功能非常齊全,有的開發者認為它比AUW強得多,理由是:
可在導入數據時更改列(字段)屬性。
在導入期間創建查詢,限制實際導入的數據。
但AUW也有DTS不具備的一個優點,那就是它能將一個Access前端鏈接到SQL Server數據。DTS則不然,它只能導入數據,你不能將導入的數據鏈接到一個現有的前端。
使用DTS導入/導出向導
可采取幾種方式來執行DTS:
在Windows【開始】菜單中,選擇【Microsoft SQL Server】,再選擇【導入和導出數據】。
運行企業管理器,連接到想導入數據的一個特定的服務器和數據庫,然后從【工具】菜單中選擇【數據轉換服務】|【導入數據】。在一個現有的數據庫中導入數據時,可使用這個選項。
在企業管理器中,連接到要導入數據的服務器,再右擊【數據轉換服務】節點。選擇【所有任務】|【導入數據】。向導最開始會顯示一個提示性屏幕。請單擊【下一步】開始操作。
指定數據源
升遷Access的第一步是指定數據源以及包含了待導入數據的實際文件。在本例中,請選擇Microsoft Access作為數據源,再找到Northwind.mdb數據庫(Access配套提供的示范數據庫)。它通常在以下文件夾中:
LocalDrive:/Program Files/Microsoft Office/Office10/Samples
注意,你可對任意Access數據庫進行升遷。升遷不會對實際的.mdb文件及其數據產生任何影響。
如圖A所示,本例不要求你輸入密碼和用戶名。但是,在操作一個安全數據庫時,則可能必須管理管理員用戶名和密碼。換言之,在操作這種數據庫之前,你必須獲得管理權限。請單擊【下一步】繼續。
圖A
指定數據源和文件。如果操作的是安全數據庫,還需要輸入管理員用戶名和密碼
相反,如果使用的是AUW,它首先會要求你選擇新建一個SQL Server數據庫,或者選擇將SQL Server數據鏈接到一個Access前端。如前所述,DTS沒有提供鏈接選項。
選擇目的
在下一個屏幕中,要為導入的數據選擇一個目的(地)。你可選擇當前服務器上的任何數據庫,也可以新建一個數據庫(本例采取的是第二種做法)。不要更改“目的”設置,雖然有幾個選項可供選擇,但本例的“目的”就是【用于SQL Server的Microsoft OLE DB提供程序】。
雖然能更改服務器,但本例不要求你這樣做。除此之外,還應該保留【使用Windows身份驗證】設置。只有SQL Server 2000才支持Windows身份驗證。當然,如果你的安全設置有所區別,那么也可以相應地修改那個選項。
從【數據庫】下拉列表中選擇【<新建>】。隨后會出現【創建數據庫】對話框。請輸入新數據庫的名稱,Northwind的數據將導入這個數據庫中,如圖B所示。命名一個工作數據庫時,務必遵循你的公司的命名規范。單擊【確定】后,DTS會自動更新【數據庫】下拉列表中的名稱。單擊【確定】繼續。
圖B
限制要導入的數據
指定了Access數據源,并新建了一個SQL Server數據庫之后,就可開始將數據從數據源導入新的SQL Server數據庫(NorthwindonlocalSS)。但是,也許不能在一個會話中完成全部工作。雖然每次都能拷貝任意數量的表。但假如你需要用一個查詢來限制數據,每次就只能操作那一個表。幸運的是,額外的工作并不需要花多少時間。
首先,讓我們創建一個查詢來限制“產品”表中的數據,從而開始我們的拷貝過程。具體地說,我們只想拷貝那些活動的(而不是中止的)的產品。為此,請選擇【用一條查詢指定要傳輸的數據】,如圖C所示,再單擊【下一步】。
圖C
圖D的SQL語句將要導入的記錄限制為那些沒有中止的產品。使用查詢生成器來顯示你要包括的表和列。對于像這樣的簡單語句來說,查詢生成器可能有點兒大材小用,但對于較復雜的語句來說,如果指定了幾個列的名稱,查詢生成器就能有效地防止你犯錯。單擊【分析】來驗證語句的有效性。輸入了正確的SQL語句后,請單擊【下一步】。
圖D
在下一個屏幕,單擊【預覽】按鈕,以便核實查詢結果。特別要注意的是,“中止”列中的每一個值都應該為False。預覽完成后,單擊【確定】以關閉【查看數據】屏幕。如果想更改一個列的屬性,可以單擊【轉換】列中的省略號按鈕,但本例不要求你那樣做。相反,我們準備在拷貝整個表時轉換數據。此時,你可能要考慮重命名即將生成的目的表。默認情況下,向導會使用“結果”這個名稱。請在【目的】列中單擊“結果”,把它更改為“產品”。單擊【下一步】繼續。
下一個屏幕顯示了用于調度導入任務的選項:
立即運行——這個選項立即執行導入任務(在DTS中稱為“包”)。如果選擇這個選項,那么不會保存任務,相反只是運行它。升遷時請選擇這個選項。
用復制方法發布目的數據——將目的表用于復制。使用這個選項,DTS 導入/導出向導結束運行后將啟動創建發布向導。
調度DTS包以便以后執行——如果想推遲到以后執行,就用這個選項來創建任務。升遷一個數據庫時,你可能不需要保存任何導入任務。單擊這個選項旁邊的省略號按鈕,會顯示一系列調度選項,本文不再贅述。
保存DTS包——將導入的任務保存到以下任何位置之一:SQL Server、SQL Server Meta Data Services、結構化存儲文件或者Visual Basic文件。
就本例來說,請選擇【立即運行】,如圖E所示,然后單擊【下一步】。
圖E
新聞熱點
疑難解答