本文將介紹如何透過 Visual Studio 2010 Ultimate 的 SQL Server 資料層應用程式(DAC)專案來產生測試資料。
【情境描述】
資料層應用程式(以下簡稱 DAC)在開發方面,提供許多便利的功能像是整合 Intellisense、除錯、靜態程式碼分析、重構與版本控管等,幫助您開發資料庫物件時能夠更有效率;在部署方面支援資料產生計畫、資料比較與結構描述比較等功能,讓你在部署資料庫物件到正式環境前,可以先做測試以及比較,以降低部署之後發生錯誤的機率。本文就先針對 Visual Studio 2010 的 SQL Server 資料層應用程式(DAC)專案來示範如何產生測試資料,其他更多有關 DAC 的功能,在筆者陸續了解後再來跟大家分享。
【建立 DAC 專案】
請開啟 Visual Studio 2010 Ultimate,於起始頁點選新增專案,在新增專案視窗中點選【資料庫 > SQL Server > SQL Server 資料層應用程式】範本,輸入專案名稱及位置後按確定。
專案建立完畢,您在方案總管中您將看到如下圖的樣子。
假設您想要將現有資料庫物件匯入到 DAC 專案,可以在方案總管中方案名稱上按滑鼠右鍵,於內容選單上點選【匯入資料層應用程式】。
在歡迎畫面中直接點選下一步。
接下來指定匯入選項,您可以選擇【從 SQL Server 的執行個體匯入】或是【從資料層應用程式封裝匯入】,前者是直接連接至指定的執行個體來匯入資料庫物件,後者則是將現有資料層應用程式封裝(*.dacpac)匯入至 DAC 專案。本文將示範利用現有的 DAC 封裝檔來匯入 DAC 專案。
【補充說明】
您可以在 SSMS 的物件總管視窗中於特定資料庫上按滑鼠右鍵後選擇【工作 > 擷取資料層應用程式】。
機著就會開始將您選擇的 DAC 封裝檔案匯入至專案。
匯入成功後,您將看到所有支援 DAC 的資料庫物件都被轉換成一個個的 *.sql 檔案,所以您可以將整個 DAC 專案加入版本控管軟體,以達到版控的目的。
除了以方案總管的方式檢視資料庫物件外,您也可以在 Visual Studio 的工具列上點選【檢視 > 資料庫結構描述檢視】。
開啟結構描述檢視視窗後,您就可以看到如下圖比較接近 SSMS 中呈現資料庫物件的樣子,對 DBA 而言是不是看起來親切多了。
【部署資料層應用程式】
在產生測試資料前,您可以將 DAC 專案部署到測試環境中,以避免影響到正式環境,因此您可以在方案總管視窗中您的專案名稱上按滑鼠右鍵,於內容視窗中選擇【屬性】。
點選左側的部署頁籤,再按編輯按鈕來編輯 DAC 專案的目的連接字串,以利將 DAC 封裝透過 Visual Studio 部署到目的資料庫。
部署資訊設定完畢後一樣在方案總管中,您的 DAC 專案名稱上按滑鼠右鍵,選擇【部署】。
部署成功後您將在輸出視窗看到類似下圖的訊息。
您也可以在 Visual Studio 的工具列上點選【建置 > 建置方案】來產生 DAC 封裝檔,然後透過 SSMS 來部署資料層應用程式。
您也可以在 SSMS 的物件總管視窗中【執行個體 > 管理 > 資料層應用程式】節點中看到您部署的資料層應用程式。
由於 DAC 專案部署的是不包含資料的 *.dacpac 封裝檔,因此我們可以利用 SQL Server 2008 R2 內建的報表來查看部署之後的資料表及其記錄數目,由下圖可見所有資料表都是空的,接下來則是要介紹如何建立測試資料。
【建立資料產生計畫】
於 Visual Studio 方案總管視窗中【專案名稱 > Data Generation Plans】資料夾上按滑鼠右鍵,選擇【加入 > 資料產生計畫】。
輸入資料產生計畫的檔案名稱後按新增。
接著 Visual Studio 會短暫提示您要產生資料時可以有哪些客製化的彈性,不過這個畫面很快就消失,因此筆者將之截圖如下:
資料產生計畫建立後,您將看到如下圖的畫面,您可以依照需求選擇要針對那些資料表或是資料行來產生資料,以及要產生多少資料列,設定完畢後將資料產生計畫儲存後按【F5】。
或是在工具列上點選【資料 > 資料產生器 > 產生資料】。
不管您直接以 F5 或是從工具列上點選產生資料,您將會看到【連接到資料庫】視窗,若您是第一次使用資料產生計畫來建立測試資料,請點選新增連接來設定連接屬性,之後就可以直接在資料產生連接資訊的選單中選擇之前所建立的資料庫連接設定。
輸入相關的連接資訊後按確定。
設定完畢之後您將看到類似下圖的樣子,接著按確定。
此時 Visual Studio 就會開始依照您的設定來產生資料。
資料產生完畢之後,我們重新回頭來查看【依資料表的磁碟使用量】報表,每個資料表的記錄數目欄位,的確都顯示 50 筆記錄。
【客製化資料產生計畫】
您也可以依照您在資料表中所建立的關聯來產生資料,下列的資料庫圖表可以看出 Products 資料表以 CatetoryID 資料行來關連到 Categories 資料表的 CategoryID 資料行。
因此我們可以將資料產生計畫中,Products 資料表的關聯資料表設定為 Categories 資料表,接著指定關聯資料表的相對比例為 1:2,接著儲存資料產生計畫後按 F5。
從下圖紅色框框處您可以看到,Products 資料表的記錄數目為 25 筆,Categories 資料表的記錄筆數為 50 筆,正好符合我們在關聯資料表的相對比例所設定 1:2。
【結論】
有了資料產生計畫這個方便的功能,您再也不需要自行撰寫 T-SQL 來產生測試資料,過去在資料結構複雜的情境下要產生相關聯的測試資料要花費您不少時間,現在只要透過 Visual Studio 2010 Ultimate 的資料庫專案、伺服器專'案或資料層應用程式,就可以快快樂樂產生測試所需的資料。
【參考資料】