Windows Azure - 使用SQL Server的DAC來輸出資料到Azure的Blob

22 August 2013 — Written by Sky Chang
#Azure#SQL Server

隨著時代的進步,Windows Azure的發展,現在Windows Azure和SQL Server的結合越來越緊密,而今天,我們就來看看,透過DAC的機制,來將SQL Server的資料,輸出一份到Azure的Blob,並且在從Azure的Blog佈署回SQL Server。

但在開始之前,或許大家對於DAC比較不熟,DAC主要是用來封裝資料庫的結構,至於為什麼要這樣呢?因為在正式的環境裡面,一般的開發人員不太可能會碰到正式的DB,而開發人員使用的是測試的DB,正常的情況下,通常是在Local開發,然後在佈署到測試db,但最終怎樣把修改過的結構給DBA呢??結論就是使用DAC,然後DBA拿到封裝包後,在去正式機上佈署。

而DAC通常有兩種封裝,一種是dacpac和bacpac,dacpac代表的是指封裝結構,而dacpac則會一起封裝資料,這邊使用的會是bacpac,這點大家也要注意一下。

從本地資料庫將資料輸出到Azure的Blob備份

在開始前,我們要先在Windows Azure那邊,建立一個新的Blob。

image

建立完成後,我們要進入那個Blob,然後建立新的容器;這邊的存取請選擇私用,表示只有此帳號的人可以讀取,才不會資料庫的東西被別人偷走。

image

容器建立完成後,就可以回到SSMS裡面,而要使用這個功能很簡單,我們只要在想要輸出的資料庫這邊,按下滑鼠右鍵,就可以看到選項如下。

image

接下來,我們可以看到這個簡介,我們可以看到,此精靈會幫我們匯出BACPAC ( 也就是包含資料 )。

image

接下來,我們要選擇連接,連線Azure的Blob

image

按下去後,會出現一個連接至Windows Azure儲存體的視窗,我們必須回到Windows Azure的Blob取得相關資料;回到Blob的儀表版,下面有一個管理存取金鑰,點下去後,就可得到我們想要的資訊,並且填入到SSMS的對話框中。

image

如果無誤的話,就可以取得到容器,這邊小弟的容器是亂打的test123。

image

最後,他會讓我們確認資訊,無誤後,就可以按下完成,開始匯出到Azure的Blob。

image

在處理的過程。

image

當完成後,我們回到Windows Azure的Blob看看,就可以發現到已經傳上去了。( 這邊有兩筆,是因為小弟測試了兩次。 )

image

這樣就完成了資料的備份。

從Azure Blob將資料匯入進來

接下來,我們要把剛剛的資料,匯入回本地的資料庫,這次我們選擇匯入資料層應用程式。

image

可以從這邊看到,我們還是利用BACPAC檔案來進行處理。

image

這邊的作法其實也都是一樣,所以就不多加解釋了喔~~

image

然後可以選擇新的資料庫名稱。

image

一樣有一些確認的資訊。

image

接下來,就開始處理了。

image

完成之後,就可以發現,我們新的資料庫已經匯入進來了,而且連資料也可以保留喔!!

image

到這邊,就算完成了。

後記

現在的東西,和Windows Azure的整合越來越緊密,除了從本地的DB可以透過DAC來將資料往上拋外,可想當然爾,Azure VM裡面的DB當然也是沒問題的,但更讓人震驚的是,Azure SQL Database也可以簡單的輸入與輸出資料到Blob,也讓整個應用更加的串接起來,更加的廣闊了。最後,如果想要手動輸入T-SQL來做的朋友們,也可以參考我好友Terry的連結喔!!~

參考資料

Sky & Study4.TW