DBCC

DBCC

Transact-SQL 編程語言提供 DBCC語句作為 Microsoft SQL Server™ 2000 的資料庫控制台命令。這些語句對資料庫的物理和邏輯一致性進行檢查。許多 DBCC 語句能夠對檢測到的問題進行修復。

簡介


Transact-SQL 編程語言提供 DBCC 語句作為 Microsoft® SQL Server™ 2000 的資料庫控制台命令。這些語句對資料庫的物理和邏輯一致性進行檢查。許多 DBCC 語句能夠對檢測到的問題進行修復。

分類


資料庫控制台命令語句被分為以下類別。
語句分類 執行
維護語句 對資料庫、索引或文件組進行維護的任務。
雜項語句 諸如啟用行級鎖定或從內存中刪除動態鏈接庫 (DLL) 等雜項任務。
狀態語句 狀態檢查。
驗證語句 對資料庫、表、索引、目錄、文件組、系統表或資料庫頁的分配進行的驗證操作。
SQL Server 2000 的 DBCC 語句使用輸入參數和返回值。所有 DBCC 語句參數都可以接受 Unicode 和 DBCS面值
使用 DBCC 結果集輸出
許多 DBCC 命令可以產生表格格式的輸出(使用 WITH TABLERESULTS 選項)。該信息可裝載到表中以便將來使用。以下顯示一個示例腳本:
-- Create the table to accept the results
CREATE TABLE #tracestatus (
TraceFlag INT,
Status INT
)
-- Execute the command, putting the results in the table
INSERT INTO #tracestatus
EXEC ('DBCC TRACESTATUS (-1) WITH NO_INFOMSGS')
-- Display the results
SELECT *
FROM #tracestatus
GO

維護語句

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 dllname (FREE) ----查看載入的擴展PROC在內存中卸載指定的擴展過程動態鏈接庫(dll)
DBCC HELP ---查詢所有DBCC命令
DBCC PINTABLE ---將表數據駐留在內存中
DBCC ROWLOCK
DBCC TRACEOFF ----關閉跟蹤標記
DBCC TRACEON ----打開跟蹤標記
DBCC UNPINTABLE ---撤消駐留在內存中的表

狀態語句

DBCC PINTABLE ---將表數據駐留在內存中
DBCC OPENTRAN ----查詢某個資料庫執行時間最久的事務,由哪個程序擁有
DBCC OUTPUTBUFFER
DBCC FREEPROCCACHE ----從過程緩衝區刪除所有元素
DBCC SHOWCONTIG ---顯示指定表的數據和索引的碎片信息
DBCC SHOW_STATISTICS ----顯示指定表上的指定目標的當前分佈統計信息
DBCC SQLPERF ---可以用來檢查是否CPU使用達到瓶頸最關鍵的一個參考數據num runnable,表明當前有多少個線程再等待運行如果大於等於2,考慮CPU達到瓶頸
DBCC TRACESTATUS ---跟蹤標記狀態
DBCC USEROPTIONS ---返回當前連接的活動(設置)的SET選項

驗證語句

DBCC CHECKALLOC ----檢查指定資料庫的磁碟空間分配結構的一致性
DBCC CHECKCATALOG ----檢查指定資料庫的系統表內和系統表間的一致性
DBCC CHECKCONSTRAINTS ----檢查指定表上的指定約束或所有約束的完整性
DBCC CHECKDB ----檢查資料庫中的所有對象的分配和結構完整性
DBCC CHECKFILEGROUP ----檢查指定文件組中所有表在當前資料庫中的分配和結構完整性
DBCC CHECKIDENT ----檢查指定的當前標識值
DBCC CHECKTABLE ----檢查指定表或索引視圖的數據、索引及test、ntest和image頁的完整性
DBCC NEWALLOC

使用建議


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 來檢查頁和記錄首部
的物理結構。當硬體導致的錯誤被置疑時,這個操作將執行快速檢查。