SQL Server 2008從開(kāi)發(fā)到管理皆提供了琳瑯滿目的全新特色,以同樣是一位身兼數(shù)據(jù)庫(kù)管理師的筆者來(lái)說(shuō),對(duì)于其中與DBA有關(guān)的五大全新特色認(rèn)為最為實(shí)用,并且也是簡(jiǎn)單易學(xué)以及馬上就可以立即上手,這五大全新特色分別是策略集中控管(Policy-Based Management)、性能資料收集(Data Collector)、透明數(shù)據(jù)加密技術(shù)(Transparent Data Encryption)、備份壓縮(Backup Compression)以及數(shù)據(jù)壓縮(Data Compression)。接下來(lái)廢話不多說(shuō),馬上讓我們一同看看相關(guān)的使用秘訣吧。
在SQL Server 2008中新增了一個(gè)可以使用策略方式,來(lái)集中管理所有SQL Server 2008實(shí)例(Instance)、數(shù)據(jù)庫(kù)、其它對(duì)象各種設(shè)定的方法,下面就這一項(xiàng)功能詳細(xì)說(shuō)明它的運(yùn)行原理以及操作方法。
整個(gè)策略的集中控管的流程是通過(guò)邏輯屬性(Facet)、條件的建立與設(shè)定、策略的建立以及管理目標(biāo)的設(shè)定來(lái)完成。其中管理目標(biāo)的設(shè)定便可以讓企業(yè)IT,來(lái)決定每一項(xiàng)策略所要套用的SQL Server 2008主機(jī)與實(shí)例,此外我們所建立好的策略也可以匯入到其它SQL Server 2008實(shí)例來(lái)直接使用。
在SQL Server 2008實(shí)例中,我們可以在對(duì)象總管的窗格中展開(kāi)至[管理][策略管理][Facet]節(jié)點(diǎn)下,看到目前所有系統(tǒng)內(nèi)建可以選擇的70多種Facet項(xiàng)目,例如接口區(qū)組態(tài)、同義字、服務(wù)器組態(tài)、服務(wù)器設(shè)定、服務(wù)器安全性、數(shù)據(jù)庫(kù)已收集數(shù)據(jù)表等等。
接下來(lái)就讓我們來(lái)建立一個(gè)策略來(lái)測(cè)試看看吧,不過(guò)在此之前可別忘了必須建立好所要套用的各種條件。請(qǐng)?jiān)赱條件]節(jié)點(diǎn)項(xiàng)目下按下鼠標(biāo)右鍵點(diǎn)選[新增條件],執(zhí)行之后將會(huì)開(kāi)啟[建立新條件]的頁(yè)面。在此您必須先為這新條件設(shè)定一個(gè)名稱,然后在[Facet]下拉選單中選取一個(gè)要使用的邏輯組態(tài),最后便需要設(shè)定所要判斷偵測(cè)的Facet字段以及域值。
在這里筆者分別從Facet中先選擇了[數(shù)據(jù)庫(kù)維護(hù)],然后在字段中選取了[@RecoveryModel]以及等于Full的值,這樣表示我們要檢查的是哪一些數(shù)據(jù)庫(kù)的恢復(fù)模式不是設(shè)定成[完成],點(diǎn)選[確定]完成設(shè)定。
接下來(lái)請(qǐng)?jiān)赱策略]節(jié)點(diǎn)上按下鼠標(biāo)右鍵點(diǎn)選[新增策略],執(zhí)行后將會(huì)開(kāi)啟如圖所示的頁(yè)面,在此您必須先輸入一個(gè)新策略名稱,然后在[檢查條件]的下拉選單中選取剛剛我們所建立的條件,并且選取所要使用的評(píng)估模式。至于在[服務(wù)器限制]的設(shè)定中則是可以讓我們選取所要套用的服務(wù)器條件設(shè)定。
有關(guān)于策略的評(píng)估模式可以區(qū)分為「視需要」、「按排程時(shí)間」、「變更時(shí)-避免」以及「變更時(shí)-僅限記錄」四種,不過(guò)這并非每一種所設(shè)定的檢查條件都可以有四種模式可以選擇,以范例中的數(shù)據(jù)庫(kù)恢復(fù)模式條件來(lái)說(shuō),便只會(huì)有「視需要」與「按排程時(shí)間」可以選擇。以下說(shuō)明這四種策略的使用時(shí)機(jī)。
視需要:讓系統(tǒng)管理員只設(shè)定好評(píng)估策略,等到需要查看策略評(píng)估結(jié)果時(shí)再來(lái)隨時(shí)手動(dòng)執(zhí)行。
按排程時(shí)間:藉由加入到SQL Server Agent的排程作業(yè)管理中,來(lái)定期執(zhí)行此評(píng)估策略,而在此模式下會(huì)自動(dòng)記錄策略違規(guī)的記錄。
變更時(shí)-避免:實(shí)時(shí)監(jiān)控與通過(guò)結(jié)合的DDL觸發(fā)程序來(lái)防止用戶建立、設(shè)定或修改違反策略的組態(tài)。
變更時(shí)-僅限記錄:實(shí)時(shí)監(jiān)控與針對(duì)違反策略的各項(xiàng)設(shè)定進(jìn)行違規(guī)記錄,并且可通過(guò)事件通知的方式來(lái)讓系統(tǒng)管理員知道。
在完成了條件與新策略的建立之后,請(qǐng)展開(kāi)至[策略管理][策略]節(jié)點(diǎn)上,針對(duì)該策略項(xiàng)目按下鼠標(biāo)右鍵點(diǎn)選擇[評(píng)估]繼續(xù)。緊接著將會(huì)開(kāi)啟如圖1所示的[評(píng)估策略]頁(yè)面,在此您將可以看到在目前所管理的SQL Server 2008實(shí)例中,有哪一些現(xiàn)有數(shù)據(jù)庫(kù)是不符合我們?cè)诓呗灾兴O(shè)定的評(píng)估條件的。對(duì)于它們的詳細(xì)信息可以點(diǎn)選相對(duì)的[檢視]連結(jié)來(lái)查看。
評(píng)估結(jié)果對(duì)于不符合策略所定義的條件時(shí)怎么辦呢?在此以數(shù)據(jù)庫(kù)的恢復(fù)模式設(shè)定來(lái)說(shuō),您便可以針對(duì)不符合規(guī)定的數(shù)據(jù)庫(kù)項(xiàng)目上按下鼠標(biāo)右鍵點(diǎn)選[內(nèi)容],然后切換到[選項(xiàng)]的頁(yè)面中即可以看到與修改目前的[恢復(fù)模式]設(shè)定了。
圖1 檢視策略評(píng)估結(jié)果
關(guān)于針對(duì)SQL Server主機(jī)各項(xiàng)運(yùn)行性能的監(jiān)控,例如分析某一些查詢式子的歷史性能表現(xiàn)等等,以往我們都必須通過(guò)操作系統(tǒng)的性能監(jiān)視器與SQL Server Profiler來(lái)進(jìn)行監(jiān)看,這樣的管理方法不僅相當(dāng)沒(méi)有效率,當(dāng)面對(duì)公司里有眾多的SQL Server需要一并監(jiān)控與分析時(shí)更是難以管理,在全新的SQL Server 2008中有更有效率的管理方法,來(lái)提供性能監(jiān)控與分析的作法。
在SQL Server 2008中提供了一項(xiàng)性能數(shù)據(jù)收集(Data Collector)的功能。然而性能數(shù)據(jù)收集雖然是SQL Server 2008中所提供的這一項(xiàng)新功能,除 了Express與Express Advanced這兩個(gè)免費(fèi)版本沒(méi)有提供之外,其它版本都是內(nèi)建此功能的。通過(guò)的它使用可以幫我們將多部的SQL Server中的服務(wù)器活動(dòng)記錄、磁盤(pán)使用量摘要、查詢統(tǒng)計(jì)數(shù)據(jù)記錄相關(guān)信息收集到指定的數(shù)據(jù)庫(kù)中來(lái)進(jìn)行分析,并且自動(dòng)產(chǎn)生所需要的三種中文分析報(bào)表。接下來(lái)就讓我們來(lái)看看這一項(xiàng)功能的使用方法。
首先請(qǐng)開(kāi)啟SQL Server Management Studio接口,然后在[對(duì)象總管]的窗格中切換到[管理][數(shù)據(jù)收集]項(xiàng)目節(jié)點(diǎn)上,按下鼠標(biāo)右鍵點(diǎn)選[設(shè)定管理數(shù)據(jù)倉(cāng)儲(chǔ)]繼續(xù)。
接下來(lái)將會(huì)開(kāi)啟[選取組態(tài)工作]頁(yè)面,由于我們是第一次執(zhí)行此設(shè)定,因此請(qǐng)選取[建立或升級(jí)管理數(shù)據(jù)倉(cāng)儲(chǔ)]項(xiàng)目,點(diǎn)選[下一步]繼續(xù)。
接著在[設(shè)定管理數(shù)據(jù)倉(cāng)儲(chǔ)內(nèi)存]頁(yè)面中,如圖2所示在此我們必須先點(diǎn)選[新增]按鈕,先來(lái)新增一個(gè)準(zhǔn)備用來(lái)存放性能收集數(shù)據(jù)的獨(dú)立數(shù)據(jù)庫(kù)(可任意命名),因此筆者特別建立了一個(gè)名為DataWarehouse的數(shù)據(jù)庫(kù)。點(diǎn)選[下一步]繼續(xù)。
接下來(lái)在[對(duì)應(yīng)登入及使用者]頁(yè)面中,必須設(shè)定相關(guān)用戶對(duì)于管理數(shù)據(jù)倉(cāng)儲(chǔ)的角色權(quán)限,分別有讀取權(quán)限、寫(xiě)入權(quán)限以及完整權(quán)限的設(shè)定。在此如果您和筆者一樣使用的是中文版,可能會(huì)發(fā)現(xiàn)下方的[數(shù)據(jù)庫(kù)角色成員資格對(duì)象]的窗格緊縮在一起而無(wú)法操作,事實(shí)上這是目前SQL Server 2008的BUG,必須等到新的修正程序出來(lái)之后才能夠解決,您可以暫時(shí)使用[Tab]按鍵與[Space]按鍵來(lái)瞎選試試看。點(diǎn)選[下一步]繼續(xù)。最后在[完成向?qū)的頁(yè)面中,可以檢視到前面我們所作的所有設(shè)定,確認(rèn)無(wú)誤之后請(qǐng)點(diǎn)選[完成]即可,否則請(qǐng)點(diǎn)選[上一步]回頭修改。
圖2 設(shè)定管理數(shù)據(jù)倉(cāng)儲(chǔ)內(nèi)存
圖3 開(kāi)啟管理數(shù)據(jù)倉(cāng)儲(chǔ)概觀
完成了數(shù)據(jù)收集管理中的數(shù)據(jù)倉(cāng)儲(chǔ)數(shù)據(jù)庫(kù)的建立之后,緊接著必須再重新執(zhí)行一次[設(shè)定管理數(shù)據(jù)倉(cāng)儲(chǔ)向?qū),在[選取組態(tài)工作]的頁(yè)面中請(qǐng)改由選取[設(shè)定數(shù)據(jù)收集]。點(diǎn)選[下一步]。在[設(shè)定管理數(shù)據(jù)倉(cāng)儲(chǔ)內(nèi)存]頁(yè)面中,如圖2所示請(qǐng)分別選取我們?cè)谇懊嫠?shù)據(jù)倉(cāng)儲(chǔ)數(shù)據(jù)庫(kù)的SQL Server實(shí)例與數(shù)據(jù)庫(kù)名稱,然后在本機(jī)任一路徑中先建立好一個(gè)用來(lái)存放緩存文件的空文件夾,并且在此頁(yè)面中的[快取目錄](méi)來(lái)完成指定即可。點(diǎn)選[下一步]繼續(xù)。
在完成了以上步驟的設(shè)定之后,接下來(lái)我們便可以在展開(kāi)至[管理][數(shù)據(jù)收集][系統(tǒng)數(shù)據(jù)收集組]的節(jié)點(diǎn)之后,看到系統(tǒng)幫我們建立好的三個(gè)數(shù)據(jù)收集的項(xiàng)目類(lèi)別,分別是[服務(wù)器活動(dòng)]、[查詢統(tǒng)計(jì)數(shù)據(jù)記錄](méi)以及[磁盤(pán)使用量記錄](méi),在此我們可以針對(duì)任一類(lèi)別項(xiàng)目按下鼠標(biāo)右鍵點(diǎn)選[屬性]來(lái)查看相關(guān)屬性設(shè)定。
開(kāi)啟[數(shù)據(jù)收集組屬性設(shè)定]的頁(yè)面,在此您便可以設(shè)定數(shù)據(jù)收集和上傳的方法,例如您可以選取[無(wú)快取]然后設(shè)定收集和上傳數(shù)據(jù)的排程。此外您還可以設(shè)定這一些分析數(shù)據(jù)在數(shù)據(jù)倉(cāng)儲(chǔ)數(shù)據(jù)庫(kù)中的保存期限(默認(rèn)值=14天)。在前面的設(shè)定中選取[無(wú)快取],那么在[挑選作業(yè)排程]的頁(yè)面中,您便可以選取所要進(jìn)行資料收集與上傳的排程方式。
當(dāng)我們自定義了資料收集與上傳的排程時(shí)間之后,我們可以在[SQL Server Agent][作業(yè)]項(xiàng)目節(jié)點(diǎn)展開(kāi)之后,看到我們前面所建立好的每一個(gè)排程作業(yè),為了讓數(shù)據(jù)的收集與上傳運(yùn)行正常,請(qǐng)務(wù)必確認(rèn)SQL Server Agent的服務(wù)持續(xù)在執(zhí)行當(dāng)中。
設(shè)定好一段時(shí)間之后,只要數(shù)據(jù)收集與上傳的排程作業(yè)項(xiàng)目中已經(jīng)成功執(zhí)行過(guò),那么接下來(lái)我們可以來(lái)查看前面所提到的三種報(bào)表,至于查看的方法有兩種,我們先來(lái)看看第一種的操作方法。首先如圖3所示,請(qǐng)?jiān)谥付閿?shù)據(jù)收集與上傳的數(shù)據(jù)庫(kù)項(xiàng)目上按下鼠標(biāo)右鍵點(diǎn)選位在[報(bào)表][管理資。料倉(cāng)儲(chǔ)]選單中的[管理數(shù)據(jù)倉(cāng)儲(chǔ)概觀]繼續(xù)。
執(zhí)行之后將會(huì)開(kāi)啟 [管理數(shù)據(jù)倉(cāng)儲(chǔ)概觀]的HTML格式頁(yè)面,根據(jù)已執(zhí)行過(guò)的排程作業(yè),我們可以在此看到三種不同的報(bào)告項(xiàng)目連結(jié)可以來(lái)點(diǎn)選,我們可以先點(diǎn)選[查詢統(tǒng)計(jì)數(shù)據(jù)記錄](méi)中的排程鏈接作為范例。
在此便會(huì)看到了[查詢統(tǒng)計(jì)數(shù)據(jù)記錄](méi)的報(bào)告頁(yè)面,我們可以看到不同查詢(Query)所占用的各種系統(tǒng)資源分析圖表,如果想針對(duì)特定的查詢式子來(lái)檢視更詳細(xì)的執(zhí)行性能分析信息,只要點(diǎn)選這個(gè)查詢式子的超鏈接即可。
實(shí)際上,可以針對(duì)特定的查詢式子執(zhí)行的運(yùn)行性能進(jìn)行查看,便可以看到它執(zhí)行時(shí)每次執(zhí)行時(shí)的平均CPU時(shí)間、每次執(zhí)行時(shí)的平均持續(xù)時(shí)間、每次執(zhí)行時(shí)的平均實(shí)體讀取次數(shù)、每次執(zhí)行時(shí)的平均邏輯寫(xiě)入次數(shù)等等。
至于第二種查看數(shù)據(jù)收集報(bào)表的方法,可以展開(kāi)至[管理][資料收集]項(xiàng)目節(jié)點(diǎn)上,按下鼠標(biāo)右鍵點(diǎn)選[報(bào)表][管理數(shù)據(jù)倉(cāng)儲(chǔ)]選單中,即可分別看到有[服務(wù)器活動(dòng)記錄](méi)、[磁盤(pán)使用量摘要]以及[查詢統(tǒng)計(jì)數(shù)據(jù)記錄](méi)。在此筆者點(diǎn)選了[磁盤(pán)使用量摘要]項(xiàng)目時(shí),如果目前已經(jīng)有收集到資料,那么將會(huì)出現(xiàn)類(lèi)似范例中的分析圖表,來(lái)列出目前所有數(shù)據(jù)庫(kù)數(shù)據(jù)文件與事務(wù)歷史記錄文件的大小、成長(zhǎng)趨勢(shì)、平均成長(zhǎng)大小等信息。
SQL Server 2008有很多新的的安全功能,可以避免因數(shù)據(jù)庫(kù)遭竊而導(dǎo)致機(jī)密數(shù)據(jù)外泄的問(wèn)題。
在SQL Server 2008中所提供的全新透明數(shù)據(jù)加密(TDE,Transparent Data Encryption)技術(shù),讓整合于它的前端應(yīng)用程序無(wú)需進(jìn)行任何原始碼的修改,即可通過(guò)服務(wù)器證書(shū)加密機(jī)制來(lái)保護(hù)數(shù)據(jù)庫(kù)的安全,而這項(xiàng)服務(wù)器證書(shū)并不需要藉由架設(shè)Windows Server所提供的CA證書(shū)頒發(fā)機(jī)構(gòu)單位來(lái)核發(fā),而是由SQL Server 2008系統(tǒng)本身來(lái)產(chǎn)生即可,無(wú)論如何這一項(xiàng)技術(shù)將可以有效避開(kāi)可能因數(shù)據(jù)庫(kù)遺失或被竊所導(dǎo)致的商業(yè)風(fēng)險(xiǎn)。
接下來(lái)就讓我們一同來(lái)看看,如何藉由SQL Server 2008所提供的幾個(gè)簡(jiǎn)單步驟來(lái)防患未然。
首先我們必須在SQL Server Management Studio的管理接口中,開(kāi)啟一個(gè)新的查詢頁(yè)面,然后以下列程序代碼范例來(lái)建立SQL Server實(shí)例的主要密鑰以及服務(wù)器證書(shū)。
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '輸入符合復(fù)雜度要求的密碼'
CREATE CERTIFICATE 新憑證名稱WITH SUBJECT= '輸入憑證描述說(shuō)明'
完成了建立主要密鑰與加密用憑證設(shè)定之后,接下來(lái)請(qǐng)針對(duì)所要進(jìn)行加密的數(shù)據(jù)庫(kù)項(xiàng)目,按下鼠標(biāo)右鍵點(diǎn)選[工作]下拉選單中的[管理數(shù)據(jù)庫(kù)加密]繼續(xù)。此時(shí)將會(huì)開(kāi)啟[管理數(shù)據(jù)庫(kù)加密]的頁(yè)面,首先您必須設(shè)定加密算法組態(tài),您可以選擇的加密算法有AES 128或3DES,然后從[使用服務(wù)器證書(shū)]下拉選單中選擇前面我們所建立的服務(wù)器證書(shū)名稱,最后請(qǐng)將位在下方的[將數(shù)據(jù)庫(kù)加密設(shè)為開(kāi)啟]選項(xiàng)勾選即可。
完成了管理數(shù)據(jù)庫(kù)加密設(shè)定之后,接下來(lái)建議您可以再一次開(kāi)啟[管理數(shù)據(jù)庫(kù)加密],然后切換到[屬性]頁(yè)面中,在此可以看到目前數(shù)據(jù)庫(kù)加密的狀態(tài)、加密建立的日期時(shí)間、加密的算法則、加密的類(lèi)型以及加密的憑證名稱等等。
完成了數(shù)據(jù)庫(kù)的加密設(shè)定之后,接下來(lái)您當(dāng)然可以測(cè)試一下加密后的結(jié)果為何,作法很簡(jiǎn)單,只要將這個(gè)加密過(guò)的數(shù)據(jù)卸除之后,將它拷貝到另一個(gè)SQL Server 2008實(shí)例的主機(jī)中,然后嘗試將它以圖形接口的操作方式將它附加上來(lái)試試。如果沒(méi)有意外將會(huì)出錯(cuò)誤訊息。
接下來(lái)您還可以改嘗試使用命令的方式來(lái)附加這個(gè)脫機(jī)的數(shù)據(jù)庫(kù)檔案試試,以CREATE DATABASE命令語(yǔ)法,來(lái)指定所要附加的數(shù)據(jù)庫(kù)數(shù)據(jù)文件(MDF)與事務(wù)歷史記錄檔案(LDF)。執(zhí)行之后相信一樣會(huì)出現(xiàn)了相同的錯(cuò)誤訊息。
為什么執(zhí)行加密數(shù)據(jù)庫(kù)的附加動(dòng)作時(shí)會(huì)出現(xiàn)上述的錯(cuò)誤訊息呢?原因很簡(jiǎn)單,因?yàn)樵谶@個(gè)SQL Server 2008的實(shí)例中,沒(méi)有相對(duì)的主要密鑰(Master Key)與服務(wù)器證書(shū)所致。
想要解決上述無(wú)法附加數(shù)據(jù)庫(kù)的問(wèn)題,我們必須在這個(gè)SQL Server 2008的實(shí)例上,建立主要密鑰與匯入服務(wù)器證書(shū)以及相對(duì)應(yīng)的私鑰,值得注意的是如果您沒(méi)有連同私鑰一并匯入將會(huì)出現(xiàn)密鑰已損壞的錯(cuò)誤訊息。
既然需要相對(duì)的服務(wù)器證書(shū)與私鑰之后,才能夠成功附加或還原加密的數(shù)據(jù)庫(kù),那么我們就必須在原來(lái)的SQL Server 2008實(shí)例查詢頁(yè)面中,以下達(dá)如圖4所示的Backup Certificate憑證名稱 TO FILE… With Private Key語(yǔ)法,來(lái)將憑證與私鑰導(dǎo)出到指定的路徑中,并且還必須在敘述中設(shè)定一串密碼來(lái)保護(hù)這個(gè)檔案的安全才可以。
一旦成功匯出服務(wù)器證書(shū)與私鑰之后,最后我們便可以拿著這個(gè)檔案到另一部新的SQL Server 2008實(shí)例主機(jī)上,如圖5所示在查詢頁(yè)面中先執(zhí)行建立主要密鑰,接著再下達(dá)CREATE CERTIFICATE語(yǔ)法來(lái)指定剛剛導(dǎo)出的憑證檔案以及私鑰儲(chǔ)存路徑,并且輸入正確的保護(hù)密碼即可。完成了以上操作之后,您可以再試試看對(duì)于加密數(shù)據(jù)庫(kù)的附加動(dòng)作,別懷疑,一定會(huì)成功的!如圖5所示。
圖4 匯出服務(wù)器證書(shū)與私鑰
圖5 建立主要密鑰與匯入服務(wù)器證書(shū)
全新的SQL Server 2008數(shù)據(jù)庫(kù)備份技術(shù),善用了如今多核心CPU架構(gòu)特性,只需要利用10%的處理資源便可以讓數(shù)據(jù)庫(kù)的備份時(shí)間,相較于以往大幅縮減了45%,而且備份壓縮下來(lái)的檔案只要原來(lái)大小的25%左右。這一項(xiàng)功能是SQL Server在數(shù)據(jù)庫(kù)備份管理上的一大突破,而在筆者實(shí)際測(cè)試的結(jié)果中,也發(fā)現(xiàn)確實(shí)可以達(dá)到這一項(xiàng)官方所提供的壓縮資料。至于如何使用此功能呢?首先我們必須先將SQL Server 2008實(shí)例中的這一項(xiàng)功能啟用。
關(guān)于啟用的方法有兩種,第一種方式是通過(guò)SQL Management Studio圖形接口,針對(duì)實(shí)例的項(xiàng)目節(jié)點(diǎn)按下鼠標(biāo)右鍵點(diǎn)選[屬性],執(zhí)行后可以看到[壓縮備份]的選項(xiàng)默認(rèn)是尚未勾選的,請(qǐng)將它勾選即可。至于第二種方法則可以通過(guò)下方的T-SQL語(yǔ)法,通過(guò)系統(tǒng)的預(yù)存程序sp_configure來(lái)進(jìn)行修改即可。一旦我們?cè)赟QL Server 2008的服務(wù)器組態(tài)中啟用了備份壓縮的功能,之后便可以針對(duì)各別的數(shù)據(jù)庫(kù)備份計(jì)劃中,選擇是否要采用備份壓縮的機(jī)制。
請(qǐng)注意!備份壓縮的功能是同時(shí)支持儲(chǔ)存在備份磁盤(pán)或磁帶上
/*以T-SQL語(yǔ)法啟用SQL Server 2008備份壓縮功能
接下來(lái)我們可以實(shí)際來(lái)測(cè)試一下數(shù)據(jù)庫(kù)備份壓縮的能力。同樣的您執(zhí)行的方法有兩種,第一種方式是通過(guò)SQL Management Studio圖形接口中的特定數(shù)據(jù)庫(kù)項(xiàng)目,按下鼠標(biāo)右鍵點(diǎn)選[工作][備份],接著將會(huì)開(kāi)啟[備份數(shù)據(jù)庫(kù)]的頁(yè)面,此刻您將可以如圖6所示在頁(yè)面中看到多出了[壓縮]區(qū)域中的設(shè)定功能,從[設(shè)定備份壓縮]下拉選單中可以選擇壓縮備份的設(shè)定,請(qǐng)選擇[使用預(yù)設(shè)服務(wù)器設(shè)定]或[壓縮備份]即可。
/*以T-SQL語(yǔ)法啟用AdventureWorks數(shù)據(jù)庫(kù)備份時(shí)的壓縮機(jī)制
如圖7所示以下兩個(gè)數(shù)據(jù)庫(kù)的備份文件,一個(gè)是采用一般傳統(tǒng)的備份結(jié)果(Adventure_DB),另一個(gè)則是采用最新的數(shù)據(jù)庫(kù)備份壓縮技術(shù)所產(chǎn)生的結(jié)果(Adventure_DB_Compress),觀察到了嗎?經(jīng)壓縮后的備份檔僅有約四分之一的大小。
圖6 數(shù)據(jù)庫(kù)備份壓縮設(shè)定
圖7 數(shù)據(jù)庫(kù)壓縮前后的大小比較
在SQL Server 2008企業(yè)版本中,除了提供備份壓縮功能來(lái)節(jié)省備份文件的儲(chǔ)存空間之外,也提供了可以對(duì)于現(xiàn)有在線數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)壓縮的功能,來(lái)大幅節(jié)省在線數(shù)據(jù)庫(kù)的數(shù)據(jù)文件大小。這是SQL Server 2008企業(yè)版中提供的另一項(xiàng)新的壓縮特色,而系統(tǒng)管理員可以通過(guò)命令或圖形操作接口,來(lái)針對(duì)現(xiàn)有的數(shù)據(jù)庫(kù)數(shù)據(jù)或新建的數(shù)據(jù)表設(shè)定壓縮機(jī)制的啟用,此外對(duì)于現(xiàn)有在線的數(shù)據(jù)庫(kù)數(shù)據(jù),我們還可以讓數(shù)據(jù)壓縮執(zhí)行之前先評(píng)估壓縮后可能造成的結(jié)果大小。接下來(lái)首先讓我們來(lái)看看以命令方式的設(shè)定方法。
我們可以先以sp_estimate_data_compression_savings預(yù)存程序的執(zhí)行方式,來(lái)查看針對(duì)指定數(shù)據(jù)表的壓縮評(píng)估,這包括堆積、叢集索引、非叢集索引、索引檢視表以及數(shù)據(jù)表和索引數(shù)據(jù)分割,如果數(shù)據(jù)表、索引或數(shù)據(jù)分割已經(jīng)壓縮,您可以使用此預(yù)存程序來(lái)評(píng)估未壓縮之?dāng)?shù)據(jù)表、索引或數(shù)據(jù)分割的大小。關(guān)于它的使用語(yǔ)法范例如下所示,其中壓縮類(lèi)型(data_compression)的值可以選擇設(shè)定為NONE、ROW或PAGE,來(lái)決定數(shù)據(jù)的壓縮評(píng)估要采用數(shù)據(jù)列還是數(shù)據(jù)頁(yè)的方式。
請(qǐng)注意!如果執(zhí)行 sp_estimate_data_compression_savings 的結(jié)果指示數(shù)據(jù)表將會(huì)成長(zhǎng),就表示數(shù)據(jù)表中的許多數(shù)據(jù)列都是使用完整有效位數(shù)的數(shù)據(jù)類(lèi)型,而且壓縮格式所需的小型負(fù)擔(dān)增加會(huì)比壓縮的空間節(jié)省更大。在這種情況下請(qǐng)勿啟用壓縮功能。
而針對(duì)準(zhǔn)備新增的數(shù)據(jù)表我們要如何來(lái)一并將數(shù)據(jù)壓縮的功能給予啟用呢?很簡(jiǎn)單筆者只要在以CREATE TABLE語(yǔ)法建立數(shù)據(jù)表的設(shè)定中,加入WITH(DATA_COMPRESSION=ROW),這表示同時(shí)針對(duì)此新數(shù)據(jù)表啟用數(shù)據(jù)列的壓縮功能。
至于如果想針對(duì)現(xiàn)有的數(shù)據(jù)表或索引壓縮進(jìn)行設(shè)定的變更,則可以通過(guò)ALTER TABLE與ALTER INDEX命令語(yǔ)法。舉例來(lái)說(shuō)如果我們想針對(duì)一個(gè)名為T(mén)1的現(xiàn)有數(shù)據(jù)表設(shè)定資料頁(yè)的壓縮,則可以輸入ALTER TABLE T1 REBUILD WITH (DATA_COMPRESSION = PAGE);
如果您想針對(duì)現(xiàn)有的在線數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行評(píng)估與壓縮,并且不希望通過(guò)下達(dá)命令的方式來(lái)完成,這時(shí)候您當(dāng)然也可以經(jīng)由圖形接口所提供的向?qū)Чぞ邅?lái)設(shè)定。請(qǐng)針對(duì)所要壓縮的數(shù)據(jù)表項(xiàng)目,按下鼠標(biāo)右鍵點(diǎn)選位在[內(nèi)存]子選單下的[管理壓縮]繼續(xù)。
接下來(lái)將會(huì)開(kāi)啟[選取壓縮類(lèi)型]頁(yè)面,同樣的在此您可以從下拉選單中選擇壓縮的類(lèi) 型(None、Row、Page),然后點(diǎn)選[計(jì)算]按鈕即可得知可能的壓縮結(jié)果,如果評(píng)估之后確認(rèn)要進(jìn)行壓縮請(qǐng)點(diǎn)選[下一步]繼續(xù)。
接下來(lái)在[選取輸出選項(xiàng)]的頁(yè)面中,您可以選擇要執(zhí)行[建立腳本 ]、[立即執(zhí)行 ]還是[排程],其中建立腳本可以幫我們產(chǎn)生針對(duì)此數(shù)據(jù)壓縮的SQL程序代碼至檔案、剪貼簿或是新增的查詢窗口中來(lái)方便我們修改。
如果選擇[立即執(zhí)行]則可以讓決定的壓縮類(lèi)型立刻被套用。至于如果是設(shè)定為排程,則將設(shè)定執(zhí)行排程的時(shí)間。我們?yōu)檫@個(gè)數(shù)據(jù)壓縮作業(yè),設(shè)定一個(gè)定期執(zhí)行壓縮的時(shí)間,或是設(shè)定一個(gè)單一次執(zhí)行的時(shí)間點(diǎn)。
至于我們往后如何得知哪一些數(shù)據(jù)表已經(jīng)啟用壓縮了呢?很簡(jiǎn)單!只要在所要檢視的數(shù)據(jù)表項(xiàng)目上按下鼠標(biāo)右鍵點(diǎn)選[屬性],開(kāi)啟[數(shù)據(jù)表屬性]頁(yè)面之后,請(qǐng)切換到[內(nèi)存]的頁(yè)面,在此您將可以在[壓縮]的區(qū)域中看到目前數(shù)據(jù)壓縮所采用的壓縮類(lèi)型。
SQL Server 2008以IT管理員的角度來(lái)看,雖然新增許多實(shí)用的管理功能,但是請(qǐng)務(wù)必記得這一些新功能(例如:數(shù)據(jù)壓縮),大多只有在SQL Server 2008的企業(yè)版本中才有提供,因此對(duì)于準(zhǔn)備部署或升級(jí)的企業(yè)用戶必須特別留意,最好能夠先仔細(xì)的看一下各版本的官方比較表。