本文將介紹如何利用 SQL Server 2014 CTP1 的 Management Studio 來部署資料庫到 Windows Azure VM。
【前提】
截至本文撰寫為止 SQL Server 2014 尚在 CTP1 階段,以下簡稱 SQL Server 2014,實際功能請以未來RTM版本為主。
【情境描述】
本文將介紹利用 SQL Server 2014 CTP1 的 Management Studio 來部署資料庫到 Windows Azure VM。
【準備管理憑證】
首先您必須下載並安裝Windows Software Development Kit (SDK) for Windows 8,安裝過程截圖如下,大部分的步驟都只要按Next即可,本文就不多做太多的敘述。
由於本文只是為了產生管理憑證,因此只需安裝Windows Software Development Kit即可,其他的功能您可依照需求自行決定是否安裝。
安裝成功後您可以利用dir來尋找makecert.exe的所在路徑,請先切換至該路徑。
利用下列的指命碼來產生管理憑證,當您看到Succeeded表示憑證產生成功。
makecert -sky exchange -r -n "CN=sql2k14.cloudapp.net" -pe -a sha1 -len 2048 -ss My "sql2k14.cer"
接著登入到Windows Azure管理入口網站,點選左側的SETTINGS功能後,於右側頁面上點選UPLOAD A MANAGEMENT CERTIFICATE。
點選BROWSE FOR FILE來找到剛剛利用makecert.exe所產生的憑證。
選擇檔案之後按完成即可開始上傳憑證並與您的Windows Azure訂閱進行關聯。
上傳成功後您將看到如下圖的畫面。
補充說明:您也可以在SSMS中部署資料庫到VM時,利用publishing profile來取得相關管理憑證以及Subscription ID,那麼您可以忽略此節。
【建立Virtual Machine】
於Windows Azure管理入口網站中點選最下方的NEW,依序選擇【COMPUTE>VIRTUAL MACHINE>FROM GALLERY】來建立Virtual Machine(以下簡稱VM)。
目前可以利用SQL Server 2014 Management Studio直接部署資料庫到VM,本地端SQL Server版本必須是SQL Server 2008、SQL Server 2008 R2、SQL Server 2012及SQL Server 2014,而VM中的SQL Server版本必須為SQL Server 2012或SQL Server 2014,因此本文使用SQL Server CTP1 Evaluation on WS 2012 R2 Preview的映像檔來當作示範,可以省去安裝作業系統後還得額外安裝SQL Server的麻煩。
於VIRTUAL MACHINE NAME欄位輸入您的VM名稱,並選擇SIZE來決定您所要使用的虛擬運算資源,最後則是輸入NEW USER NAME、NEW PASSWORD及CONFIRM等資訊,來設定您要登入VM的使用者名稱及密碼。
接著輸入VM所使用的CLOUD SERVICE DNS NAME,該名稱必須是唯一,不跟其他使用者所建立的名稱重複才行,若您是第一次建立VM,則CLOUD SERVICE、STORAGE ACCOUNT都可以保留預設值,讓Windows Azure建立VM時同時幫您建立所需的相關服務。另外,您可以選擇您要將您的VM建立在哪個資料中心,筆者使用的是位於香港的East Asia,您可以依照實際上的狀況來選擇適當的區域。
最後一個步驟則是用來設定您的VM對外要提供那些ENDPOINTS,預設只幫您建立管理用的Remote Desktop和PowerShell,您可以在這個步驟加入其他端點,或是之後再回到管理入口網站來新增也行。
於上圖按下完成後,Windows Azure管理入口網站便會開始幫您建立VM,您可以依照STATUS來判斷是否完成部署。
當VM的STATUS變成Running時代表部署完成,您可以點選下方的CONNECT,以透過RDP來連接VM。
登入VM之後您可以在Apps畫面中看到SQL Server 2014 CTP1相關的程式都已經安裝好了。
【建立Cloud Adapter for SQL Server的Endpoint】
雖然VM中已經建立從本地端SQL Server部署資料庫所需的Cloud Adapter防火牆規則(如下圖預設是 TCP 11435 Port),但您還需要自行建立Cloud Adapter for SQL Server所需的Endpoint。
因此請先打開瀏覽器登入到Windows Azure管理入口網站,點選左側的VIRTUAL MACHINES,再於右側的頁面中點選您所要建立Endpoint的VM。
在VM的歡迎畫面中點選ENDPOINTS。
在ENDPOINTS頁面中您會看到VM預設的兩個Endpoint(PowerShell與Remote Desktop),請點選下方的ADD。
您可以在VM中建立標準的Endpoint或是建立Endpoint並加入現有的Load-Balanced Set,在此您只需要使用預設的ADD STANDALONE ENDPOINT即可,請直接按Next。
於NAME欄位輸入您的Endpoint名稱,在此筆者使用的是Cloud Adapter,您可以依照您的需求自行決定名稱;PROTOCOL的部分使用預設的TCP即可;而PUBLIC PORT與PRIVATE PORT您可以依照需求自行決定是否要設定一樣,但提醒您的是,在VM中防火牆的PORT編號必須與PRIVATE PORT相同,由於Cloud Adapter預設使用TCP 11435 Port,在此筆者就將PRIVATE PORT設定為11435。
設定完畢之後您將看到如下圖的結果。
【部署資料庫到Windows Azure VM】
至此已經完成所有部署資料庫到Windows Azure VM的前置作業,接下來請開啟本地端SQL Server 2014的Management Studio,在Object Explorer視窗中您要部署的資料庫上按滑鼠右鍵,選擇Deploy Database to a Windows Azure VM。
在Deploy Database to a Windows Azure VM視窗的Introduction步驟請直接按Next。
接下來的Source Settings步驟您必須指定您要部署到VM的來源SQL Server執行個體及資料庫,請點選下圖的Connect按鈕來連接SQL Server執行個體;然後指定暫存目錄,這個目錄是用來存放部署的過程來源資料庫進行備份所需使用到的路徑。
在Windows Azure Sign-in步驟點選Select來選擇您的Windows Azure管理憑證,在Select Windows Azure Management Certificate視窗您應該會看到在【準備管理憑證】一節的憑證,選擇之後按OK。
設定好管理憑證後您必須選擇或自行輸入Subscription ID,若您的下拉式選單是空的您可以到Windows Azure VM的Dashboard頁面中找到該VM所使用的Subscription ID,將之複製貼上至下圖紅色框框處。
您也可以點選下圖的Sign in來登入Windows Azure以產生publishing profile。
輸入您Windows Azure訂閱的Microsoft account及密碼,點選Sign in來進行登入。
部署精靈需要您提供權限來產生並下載publishing profile,請點選Yes。
接著Windows Azure便會開始幫您產生publishing profile。
publishing profile產生完畢之後會提示您選擇您要存放的路徑。
然後您就可以點選Browse按鈕來選擇剛剛所下載的publishing profile。
接著您的Microsoft account所關聯的Windows Azure Subscription ID就會被帶出來,您必須選擇和您要部署的VM相同的Subscription ID。
小技巧:您也可以利用這個網址來直接下載publishing profile。
在Deployment Settings步驟中會帶出您的Cloud Service name、Virtual Machine name與其所使用的Storage account,請保留系統幫您帶出來的值不需修改,SSMS會將您的資料庫部署到現有的VM,若您想要將資料庫部署到新的VM,才需要在此輸入新的名稱;接著要指定部署到VM的哪個SQL Server執行個體,請按Settings來設定相關登入資訊。
輸入建立VM的管理者名稱及密碼,用來擷取VM上的SQL Server執行個體。
若出現如下圖的訊息,您只要按Trust publisher and connect來信任連線即可,否則無法連接到VM去取得執行個體及其資料庫名稱。
若沒問題您將看到SQL instance欄位會顯示是預設執行個體的名稱,至於Database name,由於是產生新的資料庫到VM,您可以自行指定而非一定要和來源資料庫名稱相同,而且SSMS會很貼心的幫您檢查VM上的資料庫名稱是否有和您設定名稱相同,若相同則會將Next按鈕停用,直到您輸入不重複的名稱為止。
最後則是Summary您部署資料庫到VM的相關資訊,您可以直接按Finish。
您可以從下圖的畫面中看到透過SSMS部署資料庫到VM,SSMS會先將資料庫做備份放到您所指定的暫存目錄中,然後將備份檔案上傳到VM中來還原資料庫,以完成整個部署的流程。
部署成功後您將看到如下圖的結果畫面。
您可以到VM中查看部署上來的資料庫內容,根據Disk Usage by Top Tables報表,所有相關資料表由於是利用備份還原的方式來部署,因此所有的資料庫物件都已經完整自本地端的SQL Server移轉到VM中。特別提醒的是由於透過這種方式部署資料庫,是以資料庫層級為單位,因此相關的伺服器層級物件(例如登入)就不會跟著被部署過來,您必須再自行建立。
【說明】
本文的撰寫靈感來自於SQL PASS 臺灣分部八月份聚會,台灣微軟Justin分享Windows Azure 和 SQL Server 的Hybrid運用-備援以及高可用性的內容。
【參考資料】
Create and Upload a Management Certificate for Windows Azure
Deploy a SQL Server Database to a Windows Azure Virtual Machine