




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、在危急時刻,數據庫一致性檢測(DBCC)可能是你最重要的工具。本文向你簡單介紹DBCC的功能,它們包括:檢測表和相關目錄的完整性。檢測整個數據庫。檢測數據庫頁的完整性。重建任何指定表中的目錄。你為何需要學習DBCC如果你甚至還不知道為何使用DBCC,下面提供一些原因:需要不斷分割數據庫頁(表和目錄),這可能會破壞分配。目錄可能遭到破壞,或效率降低。SQLServer引擎有時會誤解你的意圖。需要大量更新時,事情可能會很麻煩(記住,任何指定的更新實際為刪除和插入)。單個頁面,雖然仍然“健康”,但可能會失去它們的最優存儲足跡。如何運行DBCC你可以用兩種方法運行DBCC:通過命令行窗口或查詢分析器(
2、QueryAnalyzer)窗口。如果你認為必要,你還可以確定其操作的時間。(我從未感到有必要這樣做,因為在微軟的所有產品中,我對SQLServer的穩定性最為自信。我認為它是雷蒙德推出的最佳產品。但是,感覺也可能出錯。)DBCC命令包括以下擴展:CheckDB:檢測整個數據庫的一致性,是檢查數據庫破壞的基本方法。CheckTable:檢測特定表的問題。CheckAlloc:檢測數據庫的單個頁面,包括表和目錄。Reindex:重建某個特定表的目錄。CacheStats:說明當前存儲在內存緩存中的對象。DropCleanBuffers:釋放當前存儲在緩沖區中的所有數據,這樣你就可以繼續進行檢測,
3、而不必使用前面的結果。Errorlog:刪除(縮短)當前日志。你可以考慮確定包含這個命令的操作的時間,一個星期左右運行一次。FlushProclnDB:清除特定數據庫的存儲過程緩存(使用它的數據庫id而不是名稱)。使用下列代碼找出id:SELECTdbidFROMmaster.dbo.sysdatabasesWHEREname=IndexDefrag:減少目錄分裂,但不給文件加鎖,以便用戶能夠繼續應用數據庫。CheckCatalog:檢測特定數據庫表及表之間的一致性(后者意味著使用外鍵等。)如何使用這五個擴展DBCC首先建立一個數據庫快照(在某些情況下,如應用一個Master、TempDB或只
4、讀數據庫時)。附帶條件:要使用DBCC,數據庫必須處于單用戶模式。使用DBCCCheckDB此命令保證:數據與目錄頁正確連接。目錄被正確分類,并保持最新。指針一致。每個頁面的數據保持最新。頁面偏移值保持最新。以下是使用CheckDB的最常見方法:DBCCCHECKDB(AdventureWorks,REPAIR_FAST)DBCCCHECKDB(AdventureWorks,REPAIR_REBUILD)DBCCCHECKDB(AdventureWorks,REPAIR_ALLOW_DATA_LOSS)你還可以指定其它幾個選項,但以上是三個最重要的選項。我按順序列出這些DBCC命令,你應該先運
5、行它們,然后檢查結果。前兩個選項不會造成數據損失,但第三個選項會引起數據損失。因此建議把第三個命令放在一個事務內,如果數據損失不可接受,你可以執行一次回滾(ROLLBACK)。使用DBCCCheckTable大多數情況下,你遇到的問題往往與數據庫中的一個或幾個表,而不是整個數據庫有關。這時即可運行CheckTable。首先,使用相關數據庫,然后運行DBCCCheckTable命令。下面是兩個例子:DBCCCheckTable(Sales,SalesOrderHeader)DBCCCheckTable(Sales,SalesOrderHeader,REPAIR_REBUILD)使用DBCCChe
6、ckAlloc這個命令檢測數據頁及其目錄的一致性。下面是兩個例子:DBCCCHECKALLOC(Sales.SalesOrderDetails)DBCCCHECKALLOC(Sales.SalesOrderDetails,REPAIR_REBUILD)使用DBCCCheckCatalog使用這個命令來驗證一個數據庫系統表的一致性。你指定數據庫的名稱進行檢查,自變量WITHNO_INFOMSGS可選。下面是一個例子:DBCCCHECKCATALOG(AdventureWorks)使用DBCCReIndex這個命令促使某個特定的表或視圖中的一個或幾個目錄進行重建。你還可以應用某個特定目錄的名稱和填
7、充系數。列表A中包含兩個例子。第三個自變量說明我希望使用重建目錄中的一個90%的填充系數。一DBCC命令的格式dbcc(checktable(表名|表標識(,skip_ncindex)|checkdb(數據庫名,skip_ncindex)|checkalloc(數據庫名,fix|nofix)|tablealloc(表名|表標識,full|optimized|fast|null,fix|nofix)|indexalloc(表名|表標識,索引標識,full|optimezed|fast|null,fix|nofix)|checkcatalog(數據庫名)|dbrepair(數據庫名,dropdb)
8、|rei門46乂(表名|表標識)|fix_text(表名|表標識)dbcc的權限,對于checktable,fix_text和reindex是缺省賦給表的屬主,對于checkdb,checkalloc,checkcatalog,dbrepair,indexalloc和tablealloc,是缺省賦給數據庫屬主的。DBO自動獲得DBCC命令和全部選項的權限。該權限不可轉授。此外,dbcc在數據庫是活動時運行,除了dbrepair選項和帶有fix選項的dbcccheckalloc以外。checktable選項checktable是用來對一個指定的表做檢查,確保索引和數據頁正確地連接,索引按正確的順
9、序存儲,所有指針的一致性,每頁上數據信息的合理性,頁偏移的合理性。如果日志段在它自己的(日志)設備上,對syslogs表使用dbccchecktable命令可以報告已使用的和剩余的日志空間,使用skip_ncindex選項使得dbccchecktable跳過對用戶表上非聚簇索引(nonclusteredindex)的檢查。缺省是檢查所有的索引。例1.檢查日志使用的空間量和未用的空間量:dbccchecktable(syslogs)若日志段在日志設備上,則會返回如下信息:checkingsyslogsThetotalnumberofdatapageinthetableis1.NOTICE:Spa
10、ceusedonthelogsegmentis0.20Mbytes,0.13%.NOTICE:Spacefreeonthelogsegmentis153.4Mbytes,99.87%.DBCCexecutionCompleted.Ifdbccprintederrormessages,ContactauserwithSArole.若日志不在它自己的設備上,則會顯示下列信息:NOTICE:Notificationoflogspaceused/free.Cannotbereportedbecausethelogsegmentisnotonitsowndevice.例2.dbccchecktable(
11、titles)Thetotalnumberofdatapageinthistableis3.Tablehas18datarows.DBCCexecutionCompleted.IfDBCCprintederrormessages.contactauserwithSArole.checkdb選項運行checkdb選項同checktable檢查的內容一樣,但它是對一指定數據庫中的每張表都做這樣的檢查。若未指定數據庫名,checkdb檢查當前的數據庫。checkdb返回的信息,也同于checktable。checkalloc選項checkalloc是檢查指定數據庫,看其所有正確分配的頁和尚未分配的頁
12、的情況。若未指定數據庫名,則checkalloc檢查當前數據庫。checkalloc會返回已分配的和使用的空間數量。checkalloc的缺省模式為nofix,要使用fix選項,必須把數據庫置于單用戶模式。例:dbcccheckalloc(pubs2)allocpage0(#ofextent=32usedpages=68refpages=68)allocpage256(#ofextent=32usedpages=154refpages=154)allocpage512(#ofextent=28usedpages=184refpages=184)allocpage768(#ofextent=1u
13、sedpages=1refpages=1)total(#ofextent=93usedpages=407refpages=407)inthisdatabase.DBCCexecutioncompleted.Ifdbccprintederrormessage,ContactauserwithSystemAdminstrator(SA)role.tablealloc選項tablealloc檢查指定的表以確保所有頁都被正確地分配。它是checkalloc的縮小版本。對單張表進行相同的完整性檢查。使用tablealloc可以生成三種類型的報表:full,optimized和fast。full選項相當于
14、表一級的checkalloc;它報告各種類型的分配錯誤。optimized選項基于表的對象分配映像(OAM)頁里列出的分配頁生成報告。它并不報告,也不能整理OAM頁里沒有列出的在分配頁上沒有引用的擴展(extent)。如果沒有指明類型,或使用了null,則optimized選項是缺省的設置。fast選項,并不生成分配報告,但生成一個被引用但并沒有在擴展里分配的頁的額外的報告。fix|nofix選項決定tablealloc是否整理表中發現的分配錯誤。對于所有的表,缺省為fix,但系統表除外,它們的缺省為nofix。要對系統表使用fix選項,必須首先將數據庫置成單用戶模式。例:dbcctablea
15、lloc(titles)顯示信息如下:ThedefaultreportoptionofOPTIMIZEDisusedforthisrun.ThedefaultfixoptionofFIX.isusedforthisrun.Total#ofextent=3Allocpage256(#ofextent=1usedpages=2refpages=2).Allocpage256(#ofextent=1usedpages=2refpages=2)Allocpage256(#ofextent=1usedpages=2refpages=2)Total(#ofextent=3usedpages=8refpag
16、es=8)inthisdatabase.indexalloc選項indexalloc檢查指定的索引,確保所有的頁都被正確地分配,它是checkalloc的縮小版本,對單獨一條索引指定同樣的完整性檢查。其中各選項與tablealloc相同。checkcatalog選項checkcatalog選項用于檢查系統表內,系統表之間的一致性。例如:它確保在syscolumns表中的每一(數據)類型在systypes表中都有一個相匹配的記錄;對于sysobjects中的每個表和視圖在syscolumns表中應有關于它們每一列的描述記錄;確保在syslogs中的最后一個檢查點是有效的。checkcatalog
17、也報告任何已定義的段。若不指定數據庫名,則檢查當前數據庫。dbrepair選項dbrepair(數據庫名,dropdb)選項是刪除一個受破壞的數據庫。受破壞的數據庫是不能用dropdatabase命令刪除的,dropdatabase只能刪除正常的數據庫,當執行dbrepair命令時,任何用戶(包括執行此命令的用戶)都不得使用正被刪除的數據庫。該選項要在master庫中運行。reindex選項reindex選項通過運行dbccchecktable的fast執行方式檢查用戶表上索引的完整性。如果它檢測出索引有問題則會刪除并重建索引。在SQLServer的排列順序改變之后,SA或表屬主應該執行這一選
18、項。此選項不能在用戶定義的事務中運行。例:dbccreindex(titles)返回信息:Oneormoreindexescorrupt.Theywillberebuilt.fix_text選項SQLServer的字符集由單字節轉變為多字節后,fix_text選項用于升級文本值。SQLServer的字符集由單字節轉變為多字節字符集會使文本數據的管理更加復雜。由于文本值可能較大足以覆蓋若干頁,SQLServer必須能處理(通過頁約束)可能橫跨頁的字符。為做到這點,服務器需要在每一文本頁上添加一些信息。SA或表屬主必須在文本數據的每一個表上運行dbccfix_text,以計算所需要的新頁數。二DB
19、CC命令分類維護語句DBCCDBREINDEX重建指定數據庫中表的一個或多個索引DBCCDBREPAIR除去損壞的數據庫DBCCINDEXDEFRAG整理指定的表或視圖的聚集索引和輔助索引碎片DBCCSHRINKDATABASE收縮指定數據庫中的數據文件大小DBCCSHRINKFILE收縮相關數據庫的指定數據文件或日志文件大小DBCCUPDATEUSAGE報告和更正sysindexes表的不正確內容,該內容可能會導致通過sp_spaceused系統存儲過程產生不正確的空間使用報表狀態語句DBCCINPUTBUFFER顯示從客戶端發送到MSSQLServer的最后一個語句DBCCOPENTRAN如果在指定數據庫內存在最舊的活動事務和最舊的分布和非分布式復制事務,則顯示與之相關的信息。只有當存在活動事務或數據庫包含復制信息時,才顯示結果。如果沒有活動事務,就顯示信息性消息DBCCOUTPUTBUFFER以十六進制或ASCII格式返回指定系統進程ID(SPID)的當前輸出緩沖區DBCCPROCCACHE以報表形式顯示有關過程高速緩存的信息DBCCSHOWCONTIG顯示指定的表的數據和索引的碎片信息DBCCSHOW_STATISTICS顯示指定表上的指定目標的當前分布統計信息DBCCSQLPERF提供有關
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 理解專利代理對企業知識產權的貢獻試題及答案
- 藥物相互作用常識試題及答案
- 激發對2024年專利代理人考試的學習興趣試題及答案
- 山東春考醫技試題及答案
- 行之有效的計劃2025年稅務師考試試題及答案
- 綜合復習光電工程師證書試題及答案
- 藥物科學研究課題選擇試題及答案
- 光電工程師證書考試科目精講試題及答案
- 藥劑考試知識更新策略試題及答案
- 藥學職業方向的多樣化探討試題及答案
- 澳大利亞東水西調
- 腦卒中后吞咽障礙患者進食護理(2023年中華護理學會團體標準)
- 機構與零件應用智慧樹知到課后章節答案2023年下山東輕工職業學院
- 綠色信貸項目節能減排量測算指引
- 哈薩克斯坦勞動法中文版
- 表面粗糙度儀檢定證書
- 健身長拳《起勢、開步雙劈、按掌前推》教案
- 高職學生職業生涯規劃-全章課件
- 森林管護措施及造林工作思考
- 順豐ai面試19道題自我介紹
- 國家開放大學一網一平臺電大《建筑測量》實驗報告1-5題庫
評論
0/150
提交評論