【IT168專稿】隨著Microsoft SQL Server 2008 R2即將發布,使得更多的DBA和Visual Studio.Net開發人員更加關注其新增的功能特點。SQL Server 2008 R2提供了主數據服務、數據應用層程序、多伺服器管理、Power Pivot for SharePoint 、Report Builder 3.0、Stream Insight等眾多新功能。在新功能支持下,SQL Server 在數據管理上也有了全新提高,無論是數據的易管理性還是數據的可用性都得到了增強,尤其是數據應用層程序和資料庫鏡像,本文將從這兩個方面進行介紹。
在數據應用層程序實例中,你可以看到數據層應用程式的整個生命周期,包括使用測試資料庫DemoSqlServer來創建和部署數據層應用程式,DemoSqlServer是一個簡單資料庫,只是用來演示DAC,此資料庫中有2個表,一個是Users表,存儲用戶信息,有一個是Products表,存儲商品信息,通過這個實例讓你學習到使用SQL Server 2008 R2管理資料庫的新方法。
數據應用層程序(Data-Tier Application Component, DAC)
資料庫應用層程序是一個包含了幾乎某一應用所需要的資料庫及實例對象的實體,如表、視圖、存儲過程、登錄等等。有了實體以後,原本獨立的登陸、部署、維護就可以通過開發人員進行開發來整合成為一個統一的整體,這樣DBA 就可以把原本獨立的對象視為一個資料庫應用層的程序來進行部署、監控和管理。在使用DAC 之前,開發人員會準備一堆的腳本、代碼和應用,測試人員部署到測試環境上,然後測試人員和用戶在這個測試實例上進行功能、業務、UAT等一系列的測試。當測試結束後,DBA就收集這些腳本、代碼以及應用,並將它們部署到生產環境上。在部署到生產環境之前,DBA首先要確定部署到哪個生產環境的實例上。是否需要做訂閱和鏡像?如果這個應用是一個升級版本,DBA可能還需要和開發人員坐下來討論一下詳細的升級過程,哪些對象需要更新?怎麼更新這些對象?歷史數據如何處理?發布訂閱是否需要重做?更新過程中怎麼保證數據不受影響?
如果使用DAC,所有問題將簡化,下面我們就一步一步來體驗一下DAC。
創建DAC
創建DAC 有兩種方法,其一是對已經存在的數據使用SQL Server 2008 R2 自帶的DAC嚮導來創建DAC;其二是使用Visual Studio 2010 來創建DAC,下面我們分別演示。
在這個演示中我們將使用已經創建好的資料庫DemoSqlServer,選擇Users和Products表,使用SQL Server 2008 R2創建DAC;創建完DAC包以後,使用SQL Server Management Studio工具打開資料庫DemoSqlServer,並導出創建資料庫表的腳本,保存為Create DemoSqlServer Table.sql,在使用Visual Studio 2010創建DAC項目時導入腳本,然後將項目打成DAC包(擴展名是.dacpac),就可以部署了。
使用SQL Server 2008 R2 創建DAC
使用SQL Server 2008 R2 創建DAC實際上是對已經存在的資料庫執行提取數據層應用程式功能,主要包括三個步驟:
(1)設置DAC屬性,需要設置的屬性有:應用程式名稱、版本、說明、保存DAC包路徑以及可選項是否覆蓋現有文件。其界面如圖1
圖1 DAC設置屬性
(2)檢查對象依賴項和驗證結果,在驗證過程中將驗證登陸、表、視圖、存儲過程等等,驗證結果包括在前一個步驟裡的DAC設置和DAC對象,包括DAC中支持的對象和DAC中不支持的對象,只有全部對象都支持DAC才能驗證通過生成DAC包。
(3)生成DAC包,創建在DAC設置步驟中所設置的DAC包,如圖1所示,生成DAC包以後,例如,可以在E:\SQL Server Management Studio\DAC Packages下找到文件DemoSqlServer.dacpac,其類型是Microsoft SQL Server Package File。
如果我們對生成的DemoSqlServer.dacpac有更改,則可以重複步驟(1)-(3),重新生成DAC包,重新生成時可以保留原有的包,也可以以相同的文件名覆蓋原有的包,但是在這裡建議保留原有的包,同時以不同的文件名,不同的版本號來標識,這樣做的好處是可以部署需要的版本,並能夠回滾到穩定版本。
使用Visual Studio 2010 創建DAC
為了演示方便,我們首先使用SQL Server Management Studio工具打開資料庫DemoSqlServer,並導出創建資料庫表的腳本,保存為Create DemoSqlServer Table.sql。開發人員可以使用Visual Studio 2010中的資料庫項目模板創建數據應用層程序,如圖2所示:
圖2 VS2010 創建數據應用層程序
右擊解決方案,在彈出的菜單裡選擇導入腳本,我們選擇已經創建好的腳本文件Create DemoSqlServer Table.sql導入,其界面如圖3所示。
圖3 VS2010導入腳本到DAC
在圖3中,可以直接寫SQL 腳本來創建數據表,不僅如此,在DAC項目中,還可以創建的內容有:
在項目屬性裡設置項目版本、默認Schema、
數據層應用屬性,如DAC的名稱、版本、描述
Schema 對象,如Assembly、Trigger、安全、服務、存儲、表、視圖、函數
所有資料庫引擎實例級別的對象,例如錯誤信息、連接的伺服器
其他輔助文檔和一些腳本,如部署前準備腳本及部署後清理腳本等等
創建完成DAC項目後,需要把DAC項目打成DAC包,在項目屬性選項卡裡設置項目屬性,在編譯選項卡設置編譯輸出路徑和編譯輸出文件名,注意這裡輸出的文件就是DAC包,鑑於篇幅,有關創建DAC的詳細步驟,感興趣的讀者可以參考:
http://technet.microsoft.com/zh-cn/library/ee633765(SQL.105).aspx
打包完成後,我們需要把打包好的文件部署到目標伺服器上,步驟如下。
部署DAC
創建完成DAC以後,我們接下來演示部署DAC,部署DAC主要有兩個步驟:
(1)配置SQL Server 實體
打開查看|使用工具資源管理器,打開配置SQL Server實體的操作的界面如圖4所示。
圖4 配置SQL Server 實體
在此界面下,創建並連接到UCP,完成後就可以部署DAC包了。
(2)部署DAC
部署DAC也有兩種方式,一種是通過SQL Server 2008 R2 來部署DAC包,這種部署適用於使用SQL Server創建的DAC包,也可以部署適用Visual Studio 2010編譯好的DAC包;另一種方式是通過Visual Studio 2010來部署,這種部署方式適用於使用VS 2010創建的DAC項目。
使用SQL Server 自帶工具部署DAC包的界面如圖5所示:
圖5 部署DAC
點擊「部署應用層程序」後,會彈出嚮導,根據嚮導就可以把DAC包部署到SQL Server 伺服器上。使用VS部署DAC也相當簡單,在選擇菜單:編譯|部署DAC包。
資料庫鏡像
通過增強資料庫鏡像功能,Microsoft SQL Server 2008 R2資料庫的可用性得到改進,可以使用資料庫鏡像創建雙機熱備,下面的案例演示了使用微軟實例資料庫AdventureWorks創建數據鏡像,其界面如圖6所示:
圖6 創建資料庫鏡像
注意在創建鏡像之前需要配置安全性,點擊「配置安全性」,如果資料庫沒有使用使用完整恢復模式,在「選項」頁設置。在安全配置嚮導裡可以設置主題資料庫實例、鏡像資料庫實例、見證伺服器實例(可選)、服務帳戶。創建完成後,運行模式選擇高性能,開始鏡像。
創建數據鏡像的前提條件和建議:
(1)夥伴雙方(主體伺服器和鏡像伺服器)及見證伺服器必須使用相同版本的Sql Server
(2)如使用見證伺服器,擇須確保其系統上安裝 Sql Server 2005或更高版本
(3)鏡像資料庫的路徑(包括驅動器號)應該與主體資料庫的路徑相同。如果文件布局必須互不相同(例如,如果主體資料庫位於「F:」驅動器上,但鏡像系統沒有「F:」驅動器),則必須在 RESTORE 語句中加入 MOVE 選項
(4)鏡像會話中的所有伺服器實例都應該使用相同的主代碼頁和排序規則。在鏡像伺服器上創建鏡像資料庫時,確保制定相同的資料庫名稱WITH NOREBOVORY來還原主題資料庫備份。另外,還必須通過 WITH NORECOVERY 應用在該備份執行後創建的所有日誌備份。如果資料庫鏡像已經停止,則必須將對主體資料庫執行的所有後續日誌備份應用到鏡像資料庫中,然後才可以重新啟動鏡像。
(5)跨資料庫事務和分布式事務均不支持資料庫鏡像
(6)估計故障轉移資料庫的時間,以確保系統配置能提供您需要的性能。
(7) 在異步、高性能模式下開始運行
(8) 為獲得最佳性能,請為鏡像使用專用網絡接口卡 (NIC)。等待啟用自動故障轉移,直到確信不帶自動故障轉移功能的高安全性模式滿足您的業務需要並且網絡錯誤不會導致故障。
總結語
數據層應用程式提供了全新的方法來管理資料庫,不僅可以通過SQL Server 2008 R2來創建、配置和管理DAC,也可以通過Visual Studio 2010 來創建和部署DAC,有了DAC,相信DBA們會減少不少工作量,DBA的煩惱也會越來越少。
對單一數據可以通過數據層應用來管理,對資料庫則可以通過嚮導式的創建鏡像來備份資料庫,提高了SQL Server資料庫的可用性。