開啟SQL Server 2008 R2數據管理新紀元
本文將為大家講解SQL Server 2008 R2數據管理方面的改進,這些改進可以幫助DBA們提高效率,縮短工作時間。
盡管SQL Server 2008 R2僅僅是SQL Server 2008到下一版本間的過渡升級版本,不過對于SQL Server DBA來說SQL Server 2008 R2仍然有一些值得進行探索的數據管理特性。其中最為重要的特性莫過于SQL Server Utility 以及Data-Tier Application (簡稱DAC) 。
SQL Server Utility是SQL Server 2008 R2中用于多實例管理一項手段,而DAC則是SQL Server 2008 R2中數據管理的一個單元。
SQL Server Utility
下面我們簡單介紹下SQL Server Utility。
SQL Server Utility主要解決的問題是當前企業數據環境中經常面臨的一個困境——越來越多的服務器、越來越多的實例、越來越多的數據庫以及越來越少的IT人員預算。許多調查都表明,當前企業中90%以上的數據庫都小于2GB并且使用簡單的單文件策略。不過為了滿足日益靈活的業務模式,這樣的小型數據庫被不斷被投入生產環境,同時為了隔離應用、不過的部門預算又使這些小數據庫分布到了越來越多的實例以及服務器中。
盡管當前非常熱門的虛擬化技術,例如微軟的Hyper-V和Vmware的VSphere(原來稱為ESX),盡管SQL Server 2008也提供了許多Central Management Server這樣的概念來管理多實例,不過如何集中管理數據庫本身以及如何集中管理這些數據庫所依賴于的資源仍然是一項頗具挑戰性的任務,而SQL Server Utility就是用于解決這一問題的。
SQL Server Utility是一項用于集中管理數據庫所需資源的工具。SQL Server Utility為一個企業在使用SQL Server過程中所涉及的主要對象進行了統一建模,從而通過Utility Explorer為用戶提供了一個用于觀察SQL Server資源健康狀況的窗口。通過SQL Server Utility用戶可以在一個儀表盤中觀察:
◆SQL Server實例的健康狀況 (主要依據其資源消耗狀況與資源利用策略的比較結果)
◆Data-Tier Application的健康狀況 (稍后會有介紹)
◆數據文件
◆邏輯卷
◆CPU利用情況
◆存儲資源利用情況
下圖即是SQL Server Utility提供給DBA用戶的管理儀表盤。從中DBA可以迅速了解被托管實例或者已注冊DAC的健康狀況

SQL Server Utility的基礎是Utility Control Point (簡稱UCP),UCP提供了一個用于存放所有被托管實例信息的存儲中心,同時也提供了用于查詢各被托管實例情況的訪問中心。DBA將某個SQL Server實例注冊到UCP中后,一組數據收集代碼作業就會被注冊到這個被托管實例上,這些作業每個15分鐘運行一次,他們的主要任務是收集并上傳被托管實例相關的信息,例如資源利用率、DAC配置等等。
SQL Server Utility通過UCP實現的目標不僅僅是收集信息,還有一項同樣重要的任務就是提供一種稱之為資源利用策略的對象,通過這種策略對象,SQL Server Utility將可以幫助用戶判定某個實例、某個DAC是否健康。

Data-Tier Application
另外一個DBA越來越多在SQL Server 2008 R2介紹中看到的詞就是DAC,它的全稱其實是Data-Tier Application Component。
Data-Tier Application其實是一個包含了幾乎某一應用所需要的數據庫及實例對象的實體,例如表、視圖、存儲過程、登錄等等。請注意實體這個概念。有了實體這個概念,也就意味著這些原本獨立的對象現在可以被視為一個更大的對象,因此可以被開發人員打包部署、管理員整體維護,配合上面我們介紹的SQL Server Utility我們甚至可以將那些原本獨立的對象視為一個應用進行統一的監控和管理,更為關鍵的是在升級過程中如果有這個整體對象的概念,升級過程中所涉及的版本控制問題也會變得更為簡單。
看一下當前我們的工作流程。如果開發人員發布了一個新的應用,首先開發人員會準備一堆的腳本、代碼、應用,然后一一部署到某個測試實例上,然后通知用戶在這個測試實例上進行功能、業務、UAT一系列的測試。當測試結束后,DBA就需要收集這些腳本、代碼以及應用,并將它們部署到生產實例上。噢,首先當然DBA還要確定哪個生產實例更加適合部署這個新的應用。這還不是***挑戰性的,正如前面所說,如果這個應用是一個升級版本……,天哪,DBA和開發人員可能還要坐下來討論一下詳細的升級過程,哪些對象需要更新?怎么更新這些對象?更新過程中怎么保證數據不受影響?
如果使用Data-Tier Application呢?開發人員只需要在Visual Studio 2010中通過一種被稱為Data-tier Application的項目模板創建一個新項目,而后在其中定義前面提到那些對象——腳本、代碼、應用等等,而后將這個項目打包成一個DAC的包 (dacpac文件) ,然后將其發布到測試服務器。注意不再是一個一個安裝、運行,而是通過SSMS中的Data Tier Application管理節點直接加在這個包文件,這樣就可以直接將所有相關對象注冊到當前數據庫引擎實例上。

在升級場景中Data-Tier Application的優勢就更為明顯了。原本開發人員需要為一個新版本準備N套腳本,一套是全新安裝,而剩下是從某個特定版本升級到當前需要發布的版本。如果使用的是Data-Tier Application,開發人員只需要為新的版本編譯出新的包文件,在數據庫引擎部署這個新版本DAC包的時候,部署人員只需要定位到現存的DAC然后選擇升級功能,升級向導會自動比對數據庫引擎中已經部署的版本和準備部署的版本差異,然后自動確定需要執行的操作。

在一個DAC項目中,開發人員可以定義:
DAC的自身屬性,例如應用名稱、版本等等
所有數據庫級別的對象,例如表、視圖、存儲過程
所有數據庫引擎實例級別的對象,例如登錄
部署服務器需求策略,例如所需SQL Server實例版本號、操作系統版本號、硬件架構等等
其他輔助文檔,例如數據生成計劃、部署前準備腳本及部署后清理腳本等等
總結語
SQL Server Utility提供了一個多實例管理的新思路,而Data-Tier Application則提供了一個數據庫管理的新方法。結合這兩項技術,SQL Server 2008 R2毫無疑問會對DBA的工作產生深遠的影響,另外一個毫無疑問的結論是,對于當前越來越龐大的基礎架構規模和應用規模,這兩項技術所產生的影響一定是正面積極的。
了解了這么多,***的辦法是什么呢?當然是下載一個SQL Server 2008 R2的測試版,趕緊親身體驗一下。

2010-11-26 14:08:00
2010-12-27 09:48:36
2010-12-20 15:59:59
2010-11-26 14:11:33


51CTO技術棧公眾號














