Windows Azure SQL Database 備份和還原 - 第三回合

本文將介紹利用 SqlPackage.exe 公用程式 進行 Windows Azure SQL Database 備份和還原 。

情境描述

本文將介紹另外一種備份/還原 Windows Azure SQL Database (以下簡稱 SQL Database)的方式,透過 SqlPackage.exe 公用程式您可以自行撰寫排程將 SQL Database 上的資料庫匯出成 BACPAC 封裝(*.bacpac),也可以將 BACPAC 封裝直接匯入 SQL Database,利用公用程式的好處就是您可以事先撰寫好指令,搭配排程方式做到自動化,而且 SqlPackage.exe 公用程式不只適用於 SQL Databae,用在一般的 SQL Server 也一樣好用,下一節筆者就跟各位介紹如何實作。

在先前筆者針對論壇上朋友的提問撰寫了這篇文章,請容許筆者偷懶有關 SqlPackage.exe 公用程式的使用方式筆者就不再贅述,下面僅針對 SQL Database 相關的參數做示範。

實作步驟

您可以利用 SqlPackage.exe 公用程式的 Extract 動作產生 DAC 封裝(*.dacpac),以快速的建立開發或測是環境所需要的資料庫。以下的指令碼用來建立 SQL Database 的 DAC 封裝:


/a:Extract 
/scs:"Data Source=YOUR_SQL_DATABASE_ID.database.windows.net;Initial Catalog=Northwind;User ID=YOUR_USER_NAME;Password=YOUR_PASSWORD" 
/tf:D:\nw.dacpac

上述指令碼的第 2 列用來要求 SqlPackage.exe 公用程式執行擷取 DAC 封裝的動作,第 3 列則是來源 SQL Database 的連線字串,第 4 列則是指定 DAC 封裝的路徑及檔名。其執行結果如下:

image

接著您就可以在開發或測試環境使用 SqlPackage.exe 公用程式的 Publish 動作來部署 DAC 封裝。以下的指令碼用來部署 DAC 封裝到  LocalDB:


/a:Publish 
/tcs:"Data Source="(localdb)\v11.0";Initial Catalog=NW;Integrated Security=True" 
/sf:D:\nw.dacpac

上述指令碼的第 2 列用來要求 SqlPackage.exe 公用程式執行發行 DAC 封裝的動作,第 3 列則是來源 LocalDB 的連線字串,第 4 列則是來源 DAC 封裝的路徑及檔名。其執行結果如下:

SNAGHTML2f2617

筆者利用 SQLCMD 簡單的測試剛剛發行的 DAC 封裝,確定發行的資料庫正確無誤(如下圖)。

image

您應該發現了 DAC 封裝預設只有結構描述沒有包含資料,若您想包含資料該怎麼做?只要在 Extract 的時候加入 /p:ExtractAllTableData=true 參數即可(如下圖所示)。

image

參考資料

- Windows Azure SQL Database 備份和還原 - 第一回合

- Windows Azure SQL Database 備份和還原 - 第二回合

- SqlPackage.exe 公用程式

- 資料層應用程式