SQLSERVER DBCC 用法說明

2021-07-12 02:09:34 字數 3902 閱讀 1331

一、dbcc 幫助類命令

dbcc help('?') :查詢所有的dbcc命令  

dbcc help('命令') :查詢指定的dbcc命令的語法說明 

dbcc useroptions :返回當前連線的活動(設定)的set選項

二、dbcc 檢查驗證類命令

dbcc checkalloc('資料庫名稱') :檢查指定資料庫的磁碟空間分配結構的一致性

dbcc checkcatalog ('資料庫名稱') :檢查指定資料庫的系統表內和系統表間的一致性

dbcc checkconstraints ('tablename') :檢查指定表上的指定約束或所有約束的完整性

dbcc checkdb :檢查資料庫中的所有物件的分配和結構完整性 

dbcc checkfilegroup :檢查指定檔案組中所有表在當前資料庫中的分配和結構完整性

dbcc checktable :檢查指定表或索引檢視的資料、索引及test、ntest和image頁的完整性

dbcc checkident :如果存在大量資料刪除,考慮在刪除後,使用 dbcc checkident 重置一下自增值

檢查指定的當前標識值

dbcc sqlperf(umsstats):最關鍵的乙個參考資料num runnable:表明當前有多少個執行緒再等待執行,如果大於等於2,考慮cpu達到瓶頸

scheduler id:當前機器有多少個邏輯cpu就有多少個scheduler id,具體怎麼看可以看一下我的這篇文章

sqlserver獨特的任務排程演算法"sqlos"

三、dbcc 維護類命令 

dbcc cleantable ('db_name','table_name') :**alter table drop column語句刪除可變長度列或text

dbcc dbreindex :重建指定資料庫的乙個或多個索引 跟alter index rebuild差不多

dbcc indexdefrag:對錶或檢視上的索引和非聚集索引進行碎片整理

dbcc pintable (db_id,object_id) :將表資料駐留在記憶體中

檢視哪些表駐留在記憶體的方法是:0:沒有駐留 ,1:駐留

1

use[

gposdb]2

go3select

objectproperty(object_id('

dbo.systempara

'), '

tableispinned

')

dbcc unpintable (db_id,object_id) :撤消駐留在記憶體中的表

dbcc shrinkdatabase(db_id,int) :收縮指定資料庫的資料檔案和日誌檔案大小 

dbcc shrinkfile(file_name,int):收縮相關資料庫的指定資料檔案和日誌檔案大小

四、dbcc 效能調節命令

dbcc dllname(free) :在記憶體中解除安裝指定的擴充套件過程動態鏈結庫(dll)

sp_helpextendedproc 檢視載入的擴充套件proc 

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 2005伺服器記憶體中的某個資料庫的儲存過程快取內容 

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) :檢視某個資料庫的事物日誌資訊 顯示格式可以為:-1,0,1,2,3,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的建議

1、在系統使用率較低時執行 checkdb。

2、請確保未同時執行其它磁碟 i/o 操作,例如磁碟備份。

3、將 tempdb 放到單獨的磁碟系統或快速磁碟子系統中。

4、允許 tempdb 在驅動器上有足夠的擴充套件空間。 使用帶有 estimate only 的 dbcc 估計 tempdb 將需要多少空間。

5、避免執行占用大量 cpu 的查詢或批處理作業。

6、在 dbcc 命令執行時,減少活動事務。

7、使用 no_infomsgs 選項減少一些資訊的輸出。

8、考慮使用帶有 physical_only 選項的 dbcc checkdb 來檢查頁和記錄的物理結構。

physical_only 選項:只檢查物理錯誤,不檢查邏輯錯誤

物理錯誤比邏輯出更嚴重,因為物理錯誤一般sqlserver都不能修復的,而邏輯錯誤大部分sqlserver都可以修復

dbcc errorlog :如果很少重啟mssqlserver服務,那麼伺服器的日誌(不是資料庫事務日誌)會增長得很快,而且開啟和檢視日誌的速度也會很慢

使用這個命令,可以截斷當前的伺服器日誌,主要是生成乙個新的日誌。可以考慮設定乙個排程任務,每週執行這個命令自動截斷伺服器日誌。

使用儲存過程sp_cycle_errorlog也可以達到同樣的目的

stack用法,queue用法,

stack stack 模板類的定義在標頭檔案中。stack 模板類需要兩個模板引數,乙個是元素型別,乙個容器型別,但只有元素型別是必要 的,在不指定容器型別時,預設的容器型別為deque。定義stack 物件的示例 如下 stack s1 stack s2 stack 的基本操作有 入棧,如例 s...

stack用法,queue用法,

stack stack 模板類的定義在標頭檔案中。stack 模板類需要兩個模板引數,乙個是元素型別,乙個容器型別,但只有元素型別是必要 的,在不指定容器型別時,預設的容器型別為deque。定義stack 物件的示例 如下 stack s1 stack s2 stack 的基本操作有 入棧,如例 s...

object args用法 args的用法

object args用法 args和 kwargs主要用於函式定義中。args和 kwargs允許您將可變數量的引數傳遞給函式。變數在這裡的含義是,您事先不知道使用者可以將多少個引數傳遞給您的函式,因此在這種情況下,您將使用這兩個關鍵字。args用於將非關鍵字的可變長度引數列表傳送到函式。這是乙個...