對(duì)于很多SQL Azure用戶(hù)來(lái)說(shuō),使用SQL Azure的第一步就是將已有的數(shù)據(jù)庫(kù)遷移到SQL Azure。下面我將向你介紹幫助您遷移數(shù)據(jù)庫(kù)的三種工具。
一、SQL Server遷移助理(SQL Server Migration Assistant)
首先介紹的是SQL Server遷移助理(SQL Server Migration Assistant,SSMA)。它有分別針對(duì)Access、MySQL、Oracle、Sybase的幾種版本。這里我們以SQL Server Migration Assistant 2008 for Access v4.2 為例。
1、先從File菜單打開(kāi)遷移向?qū)В∕igration Wizard)。
2、然后在“創(chuàng)建新工程”(Create New Project)這一步,將遷移到(Migration To)修改為SQL Azure。這是需要注意的關(guān)鍵步驟,因?yàn)槟J(rèn)的選項(xiàng)是SQL Server。
3、然后, 我們把Access數(shù)據(jù)庫(kù)加入到向?qū)е,稍候幾秒鐘之后,這個(gè)向?qū)Ь蜁?huì)列出Access數(shù)據(jù)庫(kù)中的所有表和查詢(xún)等對(duì)象,以供選擇。
4、選擇好需要遷移的對(duì)象之后,下一步,我們需要提供SQL Azure的服務(wù)器和數(shù)據(jù)庫(kù)名稱(chēng)及登錄信息。一般來(lái)說(shuō),這時(shí)我們可以在自己的SQL Azure服務(wù)器上創(chuàng)建一個(gè)空白數(shù)據(jù)庫(kù)。
5、最后,遷移的核心開(kāi)始執(zhí)行了。在這一步中,遷移助理先把Access中的對(duì)象(包括表、主鍵、外鍵、約束等等)轉(zhuǎn)換成SQL Azure中對(duì)應(yīng)的對(duì)象,并在SQL Azure數(shù)據(jù)庫(kù)中創(chuàng)建這些對(duì)象,然后再把表內(nèi)的所有數(shù)據(jù)行轉(zhuǎn)換并載入SQL Azure數(shù)據(jù)庫(kù)中。對(duì)于轉(zhuǎn)換對(duì)象的過(guò)程,遷移助理生成了詳細(xì)的報(bào)告。我們可以點(diǎn)擊Report按鈕來(lái)瀏覽。
二、數(shù)據(jù)層應(yīng)用程序(Data-tier Application,DAC)
通過(guò)數(shù)據(jù)層應(yīng)用程序(Data-tier Application,縮寫(xiě)為DAC),我們可以將SQL Server中的數(shù)據(jù)庫(kù)的Schema提取出來(lái),并且可以方便地將Schema布署到SQL Azure上。數(shù)據(jù)層應(yīng)用程序DAC已經(jīng)集成在SQL Server Management Studio (2008 R2) 與Visual Studio 2010之中。面前,DAC只能提取和布署Schema,而不能提取、布署表中的數(shù)據(jù)行。今后,DAC會(huì)增加這項(xiàng)功能。
DAC很適宜用于基于數(shù)據(jù)庫(kù)的軟件的開(kāi)發(fā)過(guò)程中,尤其當(dāng)我們把Visual Studio和Management Studio融合為一體時(shí)。
在本文中, 我們以Management Studio中的DAC為例,來(lái)介紹數(shù)據(jù)層應(yīng)用程序的提取與布署。
1、啟動(dòng)提取數(shù)據(jù)層應(yīng)用程序的向?qū)。只需要在Object Explorer中右鍵點(diǎn)擊某一個(gè)SQL Server的數(shù)據(jù)庫(kù),在彈出的菜單中選“Tasks”,然后選擇“Extract Data-tier Application”。這樣,提取數(shù)據(jù)層應(yīng)用程序的向?qū)Ь蛷棾鰜?lái)了
。
2、在這個(gè)向?qū)е械腟et Properties(設(shè)置)頁(yè)面中,我們可以設(shè)置應(yīng)用程序的名稱(chēng)以及DAC Package的路徑。
3、接著,進(jìn)入Validation and Summary(校驗(yàn)與總結(jié))頁(yè)面。如果第一步中所選的數(shù)據(jù)庫(kù)中有DAC不支持的特性,這一步會(huì)報(bào)錯(cuò)。
4、進(jìn)入Build Package頁(yè)面生成DAC包。下面我們將把剛才生成的DAC包布署到SQL Azure服務(wù)器中。
5、在Management Studio的Object Explorer中,右鍵點(diǎn)擊 一個(gè)SQL Azure服務(wù)器。在彈出的菜單中,選擇“Deploy Data-tier Application”(布署數(shù)據(jù)層應(yīng)用程序)。
6、在彈出的“Deploy Data-tier Application”向?qū)е,進(jìn)入“Select Package”頁(yè)面。在這兒,我們選擇剛才生成的DAC包。
7、在隨后的“Update Configuration”頁(yè)面中,我們可以修改這次布署的目標(biāo)數(shù)據(jù)庫(kù)的名字。
8、在Summary頁(yè)面中,可以看到此次布署的總結(jié)。
9、最后,在“Deploy DAC”頁(yè)面中,向?qū)?huì)將DAC包布署到SQL Azure服務(wù)器,并且在服務(wù)器上注冊(cè)這個(gè)DAC包的元數(shù)據(jù)。
三、腳本生成向?qū)В℅enerate Script Wizard,GSW)
使用腳本生成向?qū)?lái)遷移數(shù)據(jù)庫(kù)的原理是:將一個(gè)數(shù)據(jù)庫(kù)的所有Schema與數(shù)據(jù)行都用GSW導(dǎo)出成Transact-SQL的腳本,然后在SQL數(shù)據(jù)庫(kù)中執(zhí)行這些腳本。具體地說(shuō)則有下述步驟。
1、在Management Studio的Object Explorer中,右鍵點(diǎn)擊某一SQL Server的數(shù)據(jù)庫(kù)。在彈出的菜單中,選取“Tasks”,再在展開(kāi)的菜單中選擇“Generate Scripts”。
2、這時(shí)會(huì)彈出“Generate and Publish Scripts”向?qū),即“生成與發(fā)布腳本”向?qū)。在這個(gè)向?qū)У腎ntroduction頁(yè)面中,點(diǎn)擊Next。
3、在“Choose Objects”頁(yè)面中,我們可以選擇需要遷移的表(Tables)、存儲(chǔ)過(guò)程(Stored Procedures)、用戶(hù)定義的數(shù)據(jù)類(lèi)型(User-Defined Data Types)以及Schemas。
4、在“Set Scripting Options”頁(yè)面中,我們需要點(diǎn)擊“Advanced”按鈕,以更改高級(jí)選項(xiàng)。
5、我們需要更改兩處高級(jí)選項(xiàng)。其一是將“Script for the database engine type”改選為“SQL Azure Database”。這是因?yàn)槲覀円獙⑦@個(gè)數(shù)據(jù)庫(kù)遷移到SQL Azure上。
6、其二是將“Types of data to script”改選為“Schema and data”,以將數(shù)據(jù)模式與數(shù)據(jù)行一起遷移。
7、然后,我們可以逃過(guò)“Summary”頁(yè)面,來(lái)到“Save or Publish Scripts”頁(yè)面。在這兒,GSW將把我們選取的數(shù)據(jù)庫(kù)對(duì)象轉(zhuǎn)錄謄寫(xiě)為一個(gè)T-SQL的腳本文件。
8、現(xiàn)在,我們就可以在SQL Azure服務(wù)器上新建一個(gè)數(shù)據(jù)庫(kù),然后通過(guò)Management Studio的腳本窗口,在這個(gè)數(shù)據(jù)庫(kù)中來(lái)執(zhí)行剛才生成的T-SQL腳本。這樣,就完成了這次數(shù)據(jù)庫(kù)遷移。