開啟SQL Server 2008 R2數(shù)據(jù)管理新紀(jì)元
本文將為大家講解SQL Server 2008 R2數(shù)據(jù)管理方面的改進(jìn),這些改進(jìn)可以幫助DBA們提高效率,縮短工作時間。
盡管SQL Server 2008 R2僅僅是SQL Server 2008到下一版本間的過渡升級版本,不過對于SQL Server DBA來說SQL Server 2008 R2仍然有一些值得進(jìn)行探索的數(shù)據(jù)管理特性。其中最為重要的特性莫過于SQL Server Utility 以及Data-Tier Application (簡稱DAC) 。
SQL Server Utility是SQL Server 2008 R2中用于多實例管理一項手段,而DAC則是SQL Server 2008 R2中數(shù)據(jù)管理的一個單元。
SQL Server Utility
下面我們簡單介紹下SQL Server Utility。
SQL Server Utility主要解決的問題是當(dāng)前企業(yè)數(shù)據(jù)環(huán)境中經(jīng)常面臨的一個困境——越來越多的服務(wù)器、越來越多的實例、越來越多的數(shù)據(jù)庫以及越來越少的IT人員預(yù)算。許多調(diào)查都表明,當(dāng)前企業(yè)中90%以上的數(shù)據(jù)庫都小于2GB并且使用簡單的單文件策略。不過為了滿足日益靈活的業(yè)務(wù)模式,這樣的小型數(shù)據(jù)庫被不斷被投入生產(chǎn)環(huán)境,同時為了隔離應(yīng)用、不過的部門預(yù)算又使這些小數(shù)據(jù)庫分布到了越來越多的實例以及服務(wù)器中。
盡管當(dāng)前非常熱門的虛擬化技術(shù),例如微軟的Hyper-V和Vmware的VSphere(原來稱為ESX),盡管SQL Server 2008也提供了許多Central Management Server這樣的概念來管理多實例,不過如何集中管理數(shù)據(jù)庫本身以及如何集中管理這些數(shù)據(jù)庫所依賴于的資源仍然是一項頗具挑戰(zhàn)性的任務(wù),而SQL Server Utility就是用于解決這一問題的。
SQL Server Utility是一項用于集中管理數(shù)據(jù)庫所需資源的工具。SQL Server Utility為一個企業(yè)在使用SQL Server過程中所涉及的主要對象進(jìn)行了統(tǒng)一建模,從而通過Utility Explorer為用戶提供了一個用于觀察SQL Server資源健康狀況的窗口。通過SQL Server Utility用戶可以在一個儀表盤中觀察:
◆SQL Server實例的健康狀況 (主要依據(jù)其資源消耗狀況與資源利用策略的比較結(jié)果)
◆Data-Tier Application的健康狀況 (稍后會有介紹)
◆數(shù)據(jù)文件
◆邏輯卷
◆CPU利用情況
◆存儲資源利用情況
下圖即是SQL Server Utility提供給DBA用戶的管理儀表盤。從中DBA可以迅速了解被托管實例或者已注冊DAC的健康狀況
SQL Server Utility的基礎(chǔ)是Utility Control Point (簡稱UCP),UCP提供了一個用于存放所有被托管實例信息的存儲中心,同時也提供了用于查詢各被托管實例情況的訪問中心。DBA將某個SQL Server實例注冊到UCP中后,一組數(shù)據(jù)收集代碼作業(yè)就會被注冊到這個被托管實例上,這些作業(yè)每個15分鐘運行一次,他們的主要任務(wù)是收集并上傳被托管實例相關(guān)的信息,例如資源利用率、DAC配置等等。
SQL Server Utility通過UCP實現(xiàn)的目標(biāo)不僅僅是收集信息,還有一項同樣重要的任務(wù)就是提供一種稱之為資源利用策略的對象,通過這種策略對象,SQL Server Utility將可以幫助用戶判定某個實例、某個DAC是否健康。
Data-Tier Application
另外一個DBA越來越多在SQL Server 2008 R2介紹中看到的詞就是DAC,它的全稱其實是Data-Tier Application Component。
Data-Tier Application其實是一個包含了幾乎某一應(yīng)用所需要的數(shù)據(jù)庫及實例對象的實體,例如表、視圖、存儲過程、登錄等等。請注意實體這個概念。有了實體這個概念,也就意味著這些原本獨立的對象現(xiàn)在可以被視為一個更大的對象,因此可以被開發(fā)人員打包部署、管理員整體維護(hù),配合上面我們介紹的SQL Server Utility我們甚至可以將那些原本獨立的對象視為一個應(yīng)用進(jìn)行統(tǒng)一的監(jiān)控和管理,更為關(guān)鍵的是在升級過程中如果有這個整體對象的概念,升級過程中所涉及的版本控制問題也會變得更為簡單。
看一下當(dāng)前我們的工作流程。如果開發(fā)人員發(fā)布了一個新的應(yīng)用,首先開發(fā)人員會準(zhǔn)備一堆的腳本、代碼、應(yīng)用,然后一一部署到某個測試實例上,然后通知用戶在這個測試實例上進(jìn)行功能、業(yè)務(wù)、UAT一系列的測試。當(dāng)測試結(jié)束后,DBA就需要收集這些腳本、代碼以及應(yīng)用,并將它們部署到生產(chǎn)實例上。噢,首先當(dāng)然DBA還要確定哪個生產(chǎn)實例更加適合部署這個新的應(yīng)用。這還不是***挑戰(zhàn)性的,正如前面所說,如果這個應(yīng)用是一個升級版本……,天哪,DBA和開發(fā)人員可能還要坐下來討論一下詳細(xì)的升級過程,哪些對象需要更新?怎么更新這些對象?更新過程中怎么保證數(shù)據(jù)不受影響?
如果使用Data-Tier Application呢?開發(fā)人員只需要在Visual Studio 2010中通過一種被稱為Data-tier Application的項目模板創(chuàng)建一個新項目,而后在其中定義前面提到那些對象——腳本、代碼、應(yīng)用等等,而后將這個項目打包成一個DAC的包 (dacpac文件) ,然后將其發(fā)布到測試服務(wù)器。注意不再是一個一個安裝、運行,而是通過SSMS中的Data Tier Application管理節(jié)點直接加在這個包文件,這樣就可以直接將所有相關(guān)對象注冊到當(dāng)前數(shù)據(jù)庫引擎實例上。
在升級場景中Data-Tier Application的優(yōu)勢就更為明顯了。原本開發(fā)人員需要為一個新版本準(zhǔn)備N套腳本,一套是全新安裝,而剩下是從某個特定版本升級到當(dāng)前需要發(fā)布的版本。如果使用的是Data-Tier Application,開發(fā)人員只需要為新的版本編譯出新的包文件,在數(shù)據(jù)庫引擎部署這個新版本DAC包的時候,部署人員只需要定位到現(xiàn)存的DAC然后選擇升級功能,升級向?qū)詣颖葘?shù)據(jù)庫引擎中已經(jīng)部署的版本和準(zhǔn)備部署的版本差異,然后自動確定需要執(zhí)行的操作。
在一個DAC項目中,開發(fā)人員可以定義:
DAC的自身屬性,例如應(yīng)用名稱、版本等等
所有數(shù)據(jù)庫級別的對象,例如表、視圖、存儲過程
所有數(shù)據(jù)庫引擎實例級別的對象,例如登錄
部署服務(wù)器需求策略,例如所需SQL Server實例版本號、操作系統(tǒng)版本號、硬件架構(gòu)等等
其他輔助文檔,例如數(shù)據(jù)生成計劃、部署前準(zhǔn)備腳本及部署后清理腳本等等
總結(jié)語
SQL Server Utility提供了一個多實例管理的新思路,而Data-Tier Application則提供了一個數(shù)據(jù)庫管理的新方法。結(jié)合這兩項技術(shù),SQL Server 2008 R2毫無疑問會對DBA的工作產(chǎn)生深遠(yuǎn)的影響,另外一個毫無疑問的結(jié)論是,對于當(dāng)前越來越龐大的基礎(chǔ)架構(gòu)規(guī)模和應(yīng)用規(guī)模,這兩項技術(shù)所產(chǎn)生的影響一定是正面積極的。
了解了這么多,***的辦法是什么呢?當(dāng)然是下載一個SQL Server 2008 R2的測試版,趕緊親身體驗一下。


2010-11-26 14:08:00
2010-11-26 14:11:33
2010-12-20 15:59:59





51CTO技術(shù)棧公眾號

速覽