SQL Server 提供了很多圖形化介面的管理功能,但是同時它也提供相對的指令來執行管理工作,這些指令式的陳述式就稱為「資料庫主控台命令」(Database Console Commands, DBCC)。
DBCC陳述式可分成以下類別目錄:
- 維護:Maintenance tasks on a database, index, or filegroup.
- 驗證:Validation operations on a database, table, index, catalog, filegroup, or allocation of database pages.
- 資訊:Tasks that gather and display various types of information
- 其他:Miscellaneous tasks such as enabling trace flags or removing a DLL from memory.
內部唯讀資料庫快照集
下列 DBCC 命令執行時,Database Engine 會建立一個資料庫快照集,且會使它進入交易一致狀態。 之後,DBCC 命令會針對這個內部唯讀資料庫快照集來進行檢查。這可以防止在執行這些命令時,發生封鎖和並行問題。
- DBCC CHECKDB :檢查指定資料庫中所有物件的邏輯完整性和實體完整性(physical and logical integrity)。
- DBCC CHECKTABLE :檢查資料表或索引檢視表的所有頁面和結構的完整性。
- DBCC CHECKFILEGROUP :檢查檔案群組中所有資料表和索引檢視的配置和結構完整性。
- DBCC CHECKCATALOG :檢查指定資料庫內的目錄一致性。
- DBCC CHECKALLOC :檢查指定之資料庫的磁碟空間配置結構是否一致。
- DBCC TRACEON :啟用指定的追蹤旗標。
當在下列情況下執行 DBCC 命令時,不會建立內部資料庫快照集:
- 針對 master,且 SQL Server 執行個體在執行單一使用者模式。
- 針對 master 以外的資料庫,但已利用 ALTER DATABASE 陳述式,使資料庫進入單一使用者模式。
- 針對唯讀資料庫。
- 針對已利用 ALTER DATABASE 陳述式,設定為緊急模式的資料庫。
- 使用 WITH TABLOCK 選項。 在這個情況下,DBCC 會接受要求,不會建立資料庫快照集。
- 針對 tempdb。 在這個情況下,會因為內部限制而無法建立資料庫快照集。
使用 DBCC CHECKDB 與 DBCC CHECKTABLE
搭配 REPAIR_REBUILD 修復參數
DBCC CHECKDB 可以用來檢查錯誤。它可搭配下列參數來使用:
- REPAIR_ALLOW_DATA_LOSS
嘗試修復所有報告的錯誤。 這些修復可能會造成某些資料的遺失。 - REPAIR_FAST
維護這個語法的目的,只是為了與舊版相容。 不會執行任何修復動作。 - REPAIR_REBUILD
執行不可能造成資料遺失的修復, 這可包括快速修復 (例如,修復非叢集索引中遺失的資料列) 以及更耗時的修復 (例如,重建索引)。
--SINGLE_USER ALTER DATABASE [Northwind] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO --執行不會造成資料遺失的檢測和修復 DBCC CHECKDB (Northwind, REPAIR_REBUILD); GO --MULTI_USER ALTER DATABASE [Northwind] SET MULTI_USER; GO
沒有留言:
張貼留言