為了使SQL Server數(shù)據(jù)庫的性能保持在最佳的狀態(tài),數(shù)據(jù)庫管理員應(yīng)該對每一個(gè)數(shù)據(jù)庫進(jìn)行定期的常規(guī)維護(hù)。這些常規(guī)任務(wù)包括重建數(shù)據(jù)庫索引、檢查數(shù)據(jù)庫完整性,更新索引統(tǒng)計(jì)信息,數(shù)據(jù)庫內(nèi)部一致性檢查和備份等…… 1.關(guān)于SQL Server 2005數(shù)據(jù)維護(hù)計(jì)劃 為了使SQL Server數(shù)據(jù)庫的性能保持在最佳的狀態(tài),數(shù)據(jù)庫管理員應(yīng)該對每一個(gè)數(shù)據(jù)庫進(jìn)行定期的常規(guī)維護(hù)。這些常規(guī)任務(wù)包括重建數(shù)據(jù)庫索引、檢查數(shù)據(jù)庫完整性,更新索引統(tǒng)計(jì)信息,數(shù)據(jù)庫內(nèi)部一致性檢查和備份等。這些常規(guī)的數(shù)據(jù)庫維護(hù)任務(wù)需要經(jīng)常重復(fù),而且繁瑣耗時(shí),所以往往被管理員忽略。而且,現(xiàn)在的數(shù)據(jù)庫管理員一天到晚都被很多其他的任務(wù)壓得喘不過氣來,根本沒有時(shí)間去進(jìn)行日常維護(hù)工作。認(rèn)識到這些問題的存在,SQL Server通過制定維護(hù)計(jì)劃,提供了一個(gè)可以自動或手動執(zhí)行這些日常維護(hù)事務(wù)的方法。當(dāng)確定并創(chuàng)建了維護(hù)任務(wù)后,日常維護(hù)就會根據(jù)設(shè)定的時(shí)間段啟動,最終會為企業(yè)提供更優(yōu)質(zhì)更穩(wěn)定更值得信賴的數(shù)據(jù)庫。 2.SQL Server Service Pack 2數(shù)據(jù)維護(hù)方面的新特性 SQL Server Service Pack 2有許多改進(jìn)的新功能和修復(fù)設(shè)置已經(jīng)能夠支持維護(hù)計(jì)劃的創(chuàng)建功能。其中改進(jìn)的特性包括: 維護(hù)計(jì)劃設(shè)計(jì)器支持在一個(gè)維護(hù)計(jì)劃里設(shè)置多個(gè)子計(jì)劃,而且每個(gè)子計(jì)劃可以具有創(chuàng)建獨(dú)立任務(wù)計(jì)劃書的功能。多重計(jì)劃書是備受期待的特性,能夠?yàn)椴煌娜粘>S護(hù)事務(wù)設(shè)置獨(dú)立的計(jì)劃表,例如備份、更新統(tǒng)計(jì)信息和執(zhí)行SQL Server作業(yè)等。 在SQL Server 2005推出的初期,如果企業(yè)想要運(yùn)行維護(hù)計(jì)劃,需要安裝SQL Server集成服務(wù)(SQL Server Integration Services,SSIS)。不過現(xiàn)在維護(hù)計(jì)劃已經(jīng)作為一項(xiàng)完全支持的特性整合到了數(shù)據(jù)庫引擎中,所以不再需要啟動集成服務(wù)了。 支持多服務(wù)器管理環(huán)境,并把維護(hù)計(jì)劃信息記錄到遠(yuǎn)程服務(wù)器,以適應(yīng)不斷增加的管理維護(hù)計(jì)劃。可以從一臺中央主服務(wù)器為所有的目標(biāo)服務(wù)器設(shè)置維護(hù)計(jì)劃。 最早出現(xiàn)在SQL Server 2000備受歡迎的“清除維護(hù)任務(wù)”(Maintenance Cleanup Task)重新回到了維護(hù)計(jì)劃里。這個(gè)任務(wù)可以刪除維護(hù)計(jì)劃執(zhí)行以后任何殘留下來的文件。 下面列舉幾個(gè)人們預(yù)想不到的修復(fù)設(shè)置,用以改善相關(guān)的具體任務(wù): SQL Server 2005 Service Pack 2為數(shù)據(jù)庫備份維護(hù)計(jì)劃任務(wù)增加了新的備份過期選項(xiàng)。如果您想讓備份設(shè)置在某個(gè)特定日期之后失效,就可以通過設(shè)置備份過期選項(xiàng)來實(shí)現(xiàn)。SQL Server 2000具有這個(gè)特性,不過在SQL Server 2005發(fā)布之初被刪除了。 您可以另外指定備份文件夾的位置,數(shù)據(jù)庫備份維護(hù)計(jì)劃任務(wù)不會再重新設(shè)置這個(gè)選項(xiàng)為默認(rèn)位置。 過去當(dāng)您運(yùn)行備份數(shù)據(jù)庫維護(hù)計(jì)劃任務(wù)時(shí),系統(tǒng)可能會錯認(rèn)為您要利用簡單恢復(fù)模式為系統(tǒng)數(shù)據(jù)庫創(chuàng)建差異和事務(wù)日志備份?,F(xiàn)在這個(gè)缺陷已經(jīng)修復(fù)了。 歷史清除維護(hù)計(jì)劃任務(wù)能夠?qū)h除文件的時(shí)間選項(xiàng)設(shè)置成以小時(shí)為單位,大大減少了人工操作時(shí)間。 更新統(tǒng)計(jì)信息任務(wù)提供原先在SQL Server 2000維護(hù)計(jì)劃中包含的完全掃描或根據(jù)樣本大小掃描的選項(xiàng)。 3. SQL Server維護(hù)計(jì)劃的任務(wù) 一個(gè)維護(hù)計(jì)劃可以在設(shè)定的時(shí)間段里運(yùn)行全套的SQL Server維護(hù)任務(wù),以確保數(shù)據(jù)庫引擎里的關(guān)系數(shù)據(jù)庫能夠優(yōu)化運(yùn)行、執(zhí)行日常備份和檢查異常數(shù)據(jù)。作為SQL Server數(shù)據(jù)庫引擎的一個(gè)特性,可以自動創(chuàng)建數(shù)據(jù)庫維護(hù)計(jì)劃并為這些日常維護(hù)設(shè)置計(jì)劃書。一個(gè)全面的維護(hù)計(jì)劃包括一下幾個(gè)主要的任務(wù):
注意,和SQL Server 2000不同,日志傳送不再包括在維護(hù)計(jì)劃的范疇里??梢栽赟QL Server Management Studio的數(shù)據(jù)庫水平上或者通過TSQL腳本設(shè)置日志傳送任務(wù)。 3.1 檢查數(shù)據(jù)庫完整性任務(wù) 檢查數(shù)據(jù)庫完整性任務(wù)(Check Database Integrity Task)檢驗(yàn)選定的關(guān)系數(shù)據(jù)庫中用戶和系統(tǒng)表的性能和結(jié)構(gòu)完整性,同時(shí)也可以選擇檢查所有索引頁的完整性,檢查對象可以是所有的系統(tǒng)和用戶數(shù)據(jù)庫,也可以是單個(gè)指定數(shù)據(jù)庫。通過維護(hù)計(jì)劃向?qū)?Maintenance Plan Wizard)或使用TSQL語句能夠手動創(chuàng)建該任務(wù)。 下面的語法雖然簡單,但提供了在AdventureWorks數(shù)據(jù)庫中創(chuàng)建檢查數(shù)據(jù)庫完整性任務(wù)所需要的所有信息。
3.2收縮數(shù)據(jù)庫任務(wù) 收縮數(shù)據(jù)庫任務(wù)可以把數(shù)據(jù)庫的物理空間和日志文件所占的空間減小到特定值,類似于SSMS中使用的自動收縮任務(wù)(Automatic Shrink Task)。收縮對象可以是所有數(shù)據(jù)庫、所有系統(tǒng)數(shù)據(jù)庫、所有用戶數(shù)據(jù)庫或單個(gè)任務(wù)中指定的數(shù)據(jù)庫。該任務(wù)會根據(jù)您輸入的百分比值消除多余的空間。此外,還可以設(shè)定各種表示大小(MB)的閾值,包括當(dāng)數(shù)據(jù)庫大小達(dá)到某特定值時(shí)的收縮量以及收縮后必須保留的可用空間大小等??捎每臻g可以保留在數(shù)據(jù)庫里,也可以釋放到操作系統(tǒng)中。 以下的TSQL語法可以用來收縮AdventureWorks 數(shù)據(jù)庫,并把所釋放的空間返回操作系統(tǒng),且允許在收縮后保留15%的可用空間。
但是,如果您要創(chuàng)建維護(hù)計(jì)劃,最好不要選擇收縮數(shù)據(jù)庫的選項(xiàng)。首先,數(shù)據(jù)庫收縮操作總是反向進(jìn)行的,即從文件末端開始釋放空間,把分配頁移動到文件起始端的未分配頁。由于所有的轉(zhuǎn)移操作都會被記錄到日志中,所以這個(gè)過程會增加事務(wù)日志文件的大小。其次,如果數(shù)據(jù)庫的使用頻率很高就會產(chǎn)生插入碎片,數(shù)據(jù)庫文件又會不斷增加。SQL Server 2005啟用即時(shí)文件初始化來解決數(shù)據(jù)庫自動增長緩慢的問題,因此增長過程會比過去快。不過,有時(shí)候會出現(xiàn)自動增長需要的空間不足的情況,這將造成數(shù)據(jù)庫性能衰退。最后,數(shù)據(jù)庫收縮和增長過于頻繁會產(chǎn)生很多文件碎片。如果您想要收縮數(shù)據(jù)庫空間,最好在數(shù)據(jù)庫運(yùn)行非高峰時(shí)段手動進(jìn)行。 3.3 重新組織索引任務(wù) 重新組織索引任務(wù)(Reorganize Index Task)可以整理索引碎片,并壓縮與所有表和視圖相關(guān)聯(lián)的或者與特定表和視圖關(guān)聯(lián)的聚集和非聚集索引,以此來來改善索引掃描性能。受此任務(wù)影響的數(shù)據(jù)庫可以是所有的數(shù)據(jù)庫、所有系統(tǒng)數(shù)據(jù)庫、所有用戶數(shù)據(jù)庫或單個(gè)目標(biāo)數(shù)據(jù)庫。任務(wù)設(shè)置了可以用來選擇壓縮圖像或文本等大型對象(LOB)數(shù)據(jù)的額外選項(xiàng)。 為了更深入了解這個(gè)任務(wù),下面舉一個(gè)用來重新組織與AdventureWorks 數(shù)據(jù)庫中的[Sales]. [SalesOrderDetail]表關(guān)聯(lián)的索引的TSQL語法實(shí)例,本例中還包含了壓縮大型對象數(shù)據(jù)的選項(xiàng):
|
|