隨著時代的進步,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。
建立完成後,我們要進入那個Blob,然後建立新的容器;這邊的存取請選擇私用,表示只有此帳號的人可以讀取,才不會資料庫的東西被別人偷走。
容器建立完成後,就可以回到SSMS裡面,而要使用這個功能很簡單,我們只要在想要輸出的資料庫這邊,按下滑鼠右鍵,就可以看到選項如下。
接下來,我們可以看到這個簡介,我們可以看到,此精靈會幫我們匯出BACPAC ( 也就是包含資料 )。
接下來,我們要選擇連接,連線Azure的Blob
按下去後,會出現一個連接至Windows Azure儲存體的視窗,我們必須回到Windows Azure的Blob取得相關資料;回到Blob的儀表版,下面有一個管理存取金鑰,點下去後,就可得到我們想要的資訊,並且填入到SSMS的對話框中。
如果無誤的話,就可以取得到容器,這邊小弟的容器是亂打的test123。
最後,他會讓我們確認資訊,無誤後,就可以按下完成,開始匯出到Azure的Blob。
在處理的過程。
當完成後,我們回到Windows Azure的Blob看看,就可以發現到已經傳上去了。( 這邊有兩筆,是因為小弟測試了兩次。 )
這樣就完成了資料的備份。
從Azure Blob將資料匯入進來
接下來,我們要把剛剛的資料,匯入回本地的資料庫,這次我們選擇匯入資料層應用程式。
可以從這邊看到,我們還是利用BACPAC檔案來進行處理。
這邊的作法其實也都是一樣,所以就不多加解釋了喔~~
然後可以選擇新的資料庫名稱。
一樣有一些確認的資訊。
接下來,就開始處理了。
完成之後,就可以發現,我們新的資料庫已經匯入進來了,而且連資料也可以保留喔!!
到這邊,就算完成了。
後記
現在的東西,和Windows Azure的整合越來越緊密,除了從本地的DB可以透過DAC來將資料往上拋外,可想當然爾,Azure VM裡面的DB當然也是沒問題的,但更讓人震驚的是,Azure SQL Database也可以簡單的輸入與輸出資料到Blob,也讓整個應用更加的串接起來,更加的廣闊了。最後,如果想要手動輸入T-SQL來做的朋友們,也可以參考我好友Terry的連結喔!!~