本章我將介紹如何將本地(區域網路內)的SQL Server 2008 R2資料庫內容遷移到SQL Azure雲端資料庫上。
在開始本章的內容之前,我建議大家能夠對前熟悉瞭解之前幾章的內容:
- SQL Azure(三) 建立一個SQL Azure 伺服器
- SQL Azure(四) 建立一個SQL Azure資料庫
- SQL Azure(五) 使用SQL Server Management Studio串連SQL Azure
為了更好的進行動手實驗,我希望大家能夠預先安裝以下軟體:
- SQL Server 2008 R2
- SQL Server Management Studio
一.建立新的SQL Azure 資料庫
1.首先開啟瀏覽器,導航到https://windows.azure.com/,輸入訂閱Azure服務的Live ID。點擊在左側的"資料庫"串連。
2.因為前幾張我們已經建立了位於香港資料中心的SQL Azure伺服器,所以我們只要建立一個新的SQL Azure資料庫就可以了。
3.新的資料庫資訊包含:
- 資料庫名: SQLAzureFrom2008R2
- 版本Web
- 最大大小: 1GB
4.點擊OK
5.點擊"防火牆規則"按鈕,選中"允許其他Windows Azure服務訪問此伺服器"
6.在"防火牆"規則裡,點擊"添加"按鈕,讓某個特定的IP能夠訪問我建立的SQL Azure伺服器。為了方便,我是這樣建立的
- 規則名稱: All IP
- IP範圍開始值: 0.0.0.0
- IP範圍結束值: 255.255.255.255
二.產生DDL指令碼
您可以使用本地已經建立好的SQL Server 2008 R2服務來進行以下的遷移工作。我已經在本地安裝了SQL Server 2008 R2並且建立了資料庫School,包含資料表和預存程序。T-SQL指令碼可以在這裡下載.
1.啟動SQL Server Managemenet Studio
2.串連本地的School資料庫。
3.選中School資料庫,右鍵-->Task-->Generate Scripts
4.如果出現"Introduction"對話方塊,選擇"Next"
5.在"Choose Objects"對話方塊裡,選擇"Select specific database objects",然後選擇Table(表),Views(視圖),Store Procedures(預存程序)等。
(注意: SQL Azure要求所有的表必須要有叢集索引。如果本地SQL Server裡的表沒有叢集索引,就不能匯入到SQL Azure裡)
6.在"Choose Objects"裡選擇"Select specific database objects" (因為本機資料庫School的所有Table均已有叢集索引,所以我們選擇所有的Table)
7.在"Set Scripting Options"對話方塊裡,選擇"Advanced"按鈕
8.修改選項:
- General-->"Script for the database engine type"設定成"SQL Azure Database"
- Table/View Options-->Script Index設定成"True"
9.在Set Scripting Options對話方塊了,選擇"Save scripts to a specific location",然後選擇"Save to new query window"
10.在Summary對話方塊裡,選擇Next
11.查看Save or Publish Scripts對話方塊,然後點擊Finish
三.在SQL Azure裡執行匯出的T-SQL語句
1.在之前的產生指令碼視窗裡,右鍵Connection-->Change Connection
2.在彈出的Connect to Database Engine對話方塊裡輸入
- SQL Azure的Server name
- 登入使用者名稱
- 密碼
3.點擊"Options",在Connection Properties裡指定我們要串連的SQL Azure Database
4.串連SQL Azure成功後,按F5(或者Query-->execute menu option)執行指令碼
可以看到之前在本地SQL Server的Table和Store Procedure已經成功遷移到SQL Azure裡。