對於很多SQL Azure使用者來說,使用SQL Azure的第一步就是將已有的資料庫遷移到SQL Azure。下面我將向你介紹協助您遷移資料庫的三種工具。
一、SQL Server遷移助理(SQL Server Migration Assistant)
首先介紹的是SQL Server遷移助理(SQL Server Migration Assistant,SSMA)。它有分別針對Access、MySQL、Oracle、Sybase的幾種版本。這裡我們以SQL Server Migration Assistant 2008 for Access v4.2 為例。
1、先從File菜單開啟遷移嚮導(Migration Wizard)。
2、然後在“建立新工程”(Create New Project)這一步,將遷移到(Migration To)修改為SQL Azure。這是需要注意的關鍵步驟,因為預設的選項是SQL Server。
3、然後, 我們把Access資料庫加入到嚮導中,稍候幾秒鐘之後,這個嚮導就會列出Access資料庫中的所有表和查詢等對象,以供選擇。
4、選擇好需要遷移的對象之後,下一步,我們需要提供SQL Azure的伺服器和資料庫名稱及登入資訊。一般來說,這時我們可以在自己的SQL Azure伺服器上建立一個空白資料庫。
5、最後,遷移的核心開始執行了。在這一步中,遷移助理先把Access中的對象(包括表、主鍵、外鍵、約束等等)轉換成SQL Azure中對應的對象,並在SQL Azure資料庫中建立這些對象,然後再把表內的所有資料行轉換並載入SQL Azure資料庫中。對於轉換對象的過程,遷移助理產生了詳細的報告。我們可以點擊Report按鈕來瀏覽。
二、資料層應用程式(Data-tier Application,DAC)
通過資料層應用程式(Data-tier Application,縮寫為DAC),我們可以將SQL Server中的資料庫的Schema提取出來,並且可以方便地將Schema布署到SQL Azure上。資料層應用程式DAC已經整合在SQL Server Management Studio (2008 R2) 與Visual Studio 2010之中。面前,DAC只能提取和布署Schema,而不能提取、布署表中的資料行。今後,DAC會增加這項功能。
DAC很適宜用於基於資料庫的軟體的開發過程中,尤其當我們把Visual Studio和Management Studio融合為一體時。
在本文中, 我們以Management Studio中的DAC為例,來介紹資料層應用程式的提取與布署。
1、啟動提取資料層應用程式的嚮導。只需要在Object Explorer中右鍵點擊某一個SQL Server的資料庫,在彈出的菜單中選“Tasks”,然後選擇“Extract Data-tier Application”。這樣,提取資料層應用程式的嚮導就彈出來了
。
2、在這個嚮導中的Set Properties(設定)頁面中,我們可以設定應用程式的名稱以及DAC Package的路徑。
3、接著,進入Validation and Summary(校正與總結)頁面。如果第一步中所選的資料庫中有DAC不支援的特性,這一步會報錯。
4、進入Build Package頁面產生DAC包。下面我們將把剛才產生的DAC包布署到SQL Azure伺服器中。
5、在Management Studio的Object Explorer中,右鍵點擊 一個SQL Azure伺服器。在彈出的菜單中,選擇“Deploy Data-tier Application”(布署資料層應用程式)。
6、在彈出的“Deploy Data-tier Application”嚮導中,進入“Select Package”頁面。在這兒,我們選擇剛才產生的DAC包。
7、在隨後的“Update Configuration”頁面中,我們可以修改這次布署的目標資料庫的名字。
8、在Summary頁面中,可以看到此次布署的總結。
9、最後,在“Deploy DAC”頁面中,嚮導會將DAC包布署到SQL Azure伺服器,並且在伺服器上註冊這個DAC包的中繼資料。
三、指令碼產生嚮導(Generate Script Wizard,GSW)
使用指令碼產生嚮導來遷移資料庫的原理是:將一個資料庫的所有Schema與資料行都用GSW匯出成Transact-SQL的指令碼,然後在SQL資料庫中執行這些指令碼。具體地說則有下述步驟。
1、在Management Studio的Object Explorer中,右鍵點擊某一SQL Server的資料庫。在彈出的菜單中,選取“Tasks”,再在展開的菜單中選擇“Generate Scripts”。
2、這時會彈出“Generate and Publish Scripts”嚮導,即“產生與發布指令碼”嚮導。在這個嚮導的Introduction頁面中,點擊Next。
3、在“Choose Objects”頁面中,我們可以選擇需要遷移的表(Tables)、預存程序(Stored Procedures)、使用者定義的資料類型(User-Defined Data Types)以及Schemas。
4、在“Set Scripting Options”頁面中,我們需要點擊“Advanced”按鈕,以更改進階選項。
5、我們需要更改兩處進階選項。其一是將“Script for the database engine type”改選為“SQL Azure Database”。這是因為我們要將這個資料庫遷移到SQL Azure上。
6、其二是將“Types of data to script”改選為“Schema and data”,以將資料模式與資料行一起遷移。
7、然後,我們可以逃過“Summary”頁面,來到“Save or Publish Scripts”頁面。在這兒,GSW將把我們選取的資料庫物件轉錄謄寫為一個T-SQL的指令檔。
8、現在,我們就可以在SQL Azure伺服器上建立一個資料庫,然後通過Management Studio的指令碼視窗,在這個資料庫中來執行剛才產生的T-SQL指令碼。這樣,就完成了這次資料庫遷移。