SQL Server DBCC用法大全

來源:互聯網
上載者:User

msdn:http://msdn.microsoft.com/zh-cn/library/ms188796.aspx

DBCC是SQL Server提供的一組控制台命令,功能很強大,掌握一些必要的語句,對操作資料庫有不少協助,所以決定整理一下,發現已有不少類似的整理,減少了不少工作,歸類如下:

一、DBCC 協助類命令

* DBCC HELP('?')
查詢所有的DBCC命令
* DBCC HELP('命令')
查詢指定的DBCC命令的文法說明
* DBCC USEROPTIONS
返回當前串連的活動(設定)的SET選項

二、DBCC 檢查驗證類命令

* DBCC CHECKALLOG ('資料庫名稱')
檢查指定資料庫的磁碟空間分配結構的一致性
* DBCC CHECKCATALOG ('資料庫名稱')
檢查指定資料庫的系統資料表內和系統資料表間的一致性
* DBCC CHECKCONSTAINTS ('tablename')
檢查指定表上的指定約束或所有約束的完整性
* DBCC CHECKDB
檢查資料庫中的所有對象的分配和結構完整性
* DBCC CHECKFILEGROUP
檢查指定檔案組中所有表在當前資料庫中的分配和結構完整性
* DBCC CHECKTABLE
檢查指定表或索引檢視表的資料、索引及test、ntest和image頁的完整性
* DBCC CHECKIDENT
檢查指定的當前標識值
* DBCC SQLPERF(UMSSTATS) undocumented in BOL
可以用來檢查是否CPU使用達到瓶頸
最關鍵的一個參考資料num runnable,表明當前有多少個線程再等待運行
如果大於等於2,考慮CPU達到瓶頸

三、DBCC 維護類命令

* DBCC CLEANTABLE ('db_name','table_name')
回收Alter table drop column語句刪除可變長度列或text
* DBCC DBREINDEX
重建指定資料庫的一個或多個索引
* DBCC INDEXDEFRAG
對錶或視圖上的索引和非叢集索引進行磁碟重組
* DBCC PINTABLE (db_id,object_id)
將表資料駐留在記憶體中
查看哪些表駐留在記憶體的方法是:
select objectproperty(object_id('tablename'),‘tableispinned')
* DBCC UNPINTABLE (db_id,object_id)
撤消駐留在記憶體中的表
* DBCC SHRINKDATABASE(db_id,int)
收縮指定資料庫的資料檔案和記錄檔大小
* DBCC SHRINKFILE(file_name,int)
收縮相關資料庫的指定資料檔案和記錄檔大小

四、DBCC 效能調節命令

* DBCC dllname(FREE)
sp_helpextendedproc 查看載入的擴充PROC
在記憶體中卸載指定的擴充過程動態連結程式庫(dll)
* DBCC DROPCLEANBUFFERS
從緩衝池中刪除所有緩衝區
* DBCC FREEPROCCACHE
從過程緩衝區刪除所有元素
* DBCC INPUTBUFFER
顯示從客戶機發送到伺服器的最後一個語句
* DBCC OPENTRAN (db_name)
查詢某個資料庫執行時間最久的事務,由哪個程式擁有
* DBCC SHOW_STATISTICS
顯示指定表上的指定目標的當前分布統計資訊
* DBCC SHOWCONTIG
顯示指定表的資料和索引的片段資訊
* DBCC SQLPERF
(logspace) 查看各個DB的日誌情況
(iostats) 查看IO情況
(threads) 查看線程消耗情況
返回多種有用的統計資訊
* DBCC CACHESTATS
顯示SQL Server 2000記憶體的統計資訊
* DBCC CURSORSTATS
顯示SQL Server 2000遊標的統計資訊
* DBCC MEMORYSTATS
顯示SQL Server 2000記憶體是如何細分的
* DBCC SQLMGRSTATS
顯示緩衝中先讀和預讀準備的SQL語句

五、DBCC 未公開的命令

* DBCC ERRLOG
初始化SQL Server 2000的錯誤記錄檔檔案
* DBCC FLUSHPROCINDB (db_id)
清除SQL Server 2000伺服器記憶體中的某個資料庫的預存程序緩衝內容
* DBCC BUFFER (db_name,object_name,int(緩衝區個數))
顯示緩衝區的頭部資訊和頁面資訊
* DBCC DBINFO (db_name)
顯示資料庫的結構資訊
* DBCC DBTABLE
顯示管理資料的表(資料字典)資訊
* DBCC IND (db_name,table_name,index_id)
查看某個索引使用的頁面資訊
* DBCC REBUILDLOG
重建SQL Server 2000交易記錄檔
* DBCC LOG (db_name,3) (-1--4)
查看某個資料庫使用的事物日誌資訊
* DBCC PAGE
查看某個資料庫資料頁面資訊
* DBCC PROCBUF
顯示過程緩衝池中的緩衝區頭和預存程序頭
* DBCC PRTIPAGE
查看某個索引頁面的每行指向的頁面號
* DBCC PSS (user,spid,1)
顯示當前串連到SQL Server 2000伺服器的進程資訊
* DBCC RESOURCE
顯示伺服器當前使用的資源情況
* DBCC TAB (db_id,object_id)
顯示資料頁面的結構

六、DBCC跟蹤標記

跟蹤標記用於臨時設定伺服器的特定特徵或關閉特定行為,常用於診斷效能問題或調試預存程序或複雜的電腦系統
* DBCC TRACEON (3604)
開啟跟蹤標記
* DBCC TRACEOFF
關閉跟蹤標記
* DBCC TRACESTATS
查看跟蹤標記狀態

七、使用 DBCC 結果集輸出

  許多 DBCC 命令可以產生表格格式的輸出(使用 WITH TABLERESULTS 選項)。該資訊可裝載到表中以便將來使用。以下顯示一個樣本指令碼:

  
  CREATE TABLE DBCCResult (

  DBCCFlag INT,

  Result INT

  )

  INSERT INTO DBCCResult

  EXEC ('DBCC TRACESTATUS (-1) WITH NO_INFOMSGS')

  SELECT *

  FROM DBCCResult
八、官方使用DBCC的建議
1、在系統使用率較低時運行 CHECKDB。
2、請確保未同時執行其它磁碟 I/O 操作,例如磁碟備份。
3、將 tempdb 放到單獨的磁碟系統或快速磁碟子系統中。
4、允許 tempdb 在磁碟機上有足夠的擴充空間。 使用帶有 ESTIMATE ONLY 的 DBCC
估計 tempdb 將需要多少空間。
5、避免運行佔用大量 CPU 的查詢或批次工作。
6、在 DBCC 命令運行時,減少活動事務。
7、使用 NO_INFOMSGS 選項顯著減少處理和 tempdb 的使用。
8、考慮使用帶有 PHYSICAL_ONLY 選項的 DBCC CHECKDB 來檢查頁和記錄首部
的物理結構。當硬體導致的錯誤被置疑時,這個操作將執行快速檢查。

 

 

 

 

 

在發布,訂閱複製時要用伺服器實名時可以這樣:

select * from sysservers   (可以找到原來伺服器的名稱)

 

exec sp_dropserver 'jmsql9'    (刪除原來的伺服器名)

 

exec sp_addserver 'jmSQL9' ,LOCAL    (改為新的伺服器名)

 

 

 

ALTER DATABASE [jm] SET SINGLE_USER          (改為單一使用者模式)

 

DBCC CHECKDB("databasename",REPAIR_REBUILD) WITH TABLOCK    (修複資料庫)

DBCC CHECKTABLE("tablename",repair_rebuild) with tablock (修複表)

DBCC DBREINDEX ('t_icitem' , '   ')     修複此表所有的索引。

 

ALTER DATABASE [jm] SET MULTI_USER                    (改為多使用者模式)

 

REPAIR_ALLOW_DATA_LOSS:執行由REPAIR_REBUILD 完成的所有修複,包括對行和頁進行分配和取消分配以改正分配錯誤、結構行或頁的錯誤,以及刪除已損壞的文字物件。這些修複可能會導致一些資料丟失。修複操作可以在使用者事務下完成以允許使用者復原所做的更改。如果復原修複,則資料庫仍會含有錯誤,應該從備份進行恢複。如果由於所提供修複等級的緣故遺漏某個錯誤的修複,則將遺漏任何取決於該修複的修複。修複完成後,備份資料庫。

REPAIR_FAST 進行小的、不耗時的修複操作,如修複非叢集索引中的附加鍵。這些修複可以很快完成,並且不會有遺失資料的危險。

REPAIR_REBUILD 執行由REPAIR_FAST 完成的所有修複,包括需要較長時間的修複(如重建索引),執行這些修複時不會有遺失資料的危險。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.