sql server數(shù)據(jù)庫修復(fù)語句DBCC checkdb大全
廣告:
alter database test set emergency
--將數(shù)據(jù)庫設(shè)置為緊急狀態(tài)
use master
ALTER DATABASE test SET SINGLE_USER WITH ROLLBACK IMMEDIATE
go
--將目標數(shù)據(jù)庫置為單用戶狀態(tài)
dbcc checkdb(test,REPAIR_ALLOW_DATA_LOSS)
go
ALTER DATABASE test SET MULTI_USER
--將目標數(shù)據(jù)庫置為多用戶狀態(tài)
dbcc checkdb('kmadv_v9') dbcc checkdb('kmady_v9') with no_infomsgs --只顯示錯誤信息 dbcc checkdb(test,REPAIR_REBUILD) --重建索引 dbcc checkdb('kmadv_v9',REPAIR_ALLOW_DATA_LOSS) ---會損壞小部分數(shù)據(jù)(比如丟字段或者最近記錄)
DBCC UPDATEUSAGE (0)
SELECT * FROM sysobjects where id = 99
SELECT * FROM sys.objects WHERE object_id =0
檢查指定數(shù)據(jù)庫的磁盤空間分配結(jié)構(gòu)的一致性
DBCC CHECKALLOC(kmadv_v9,repair_allow_data_loss) with no_infomsgs
檢查指定數(shù)據(jù)庫的系統(tǒng)表內(nèi)和系統(tǒng)表間的一致性
DBCC CHECKCATALOG(kmadv_v9,repair_allow_data_loss) with no_infomsgs
DBCC CHECKCATALOG(kmadv_v9)
DBCC CHECKTABLE
dbcc checktable('sys.syscolpars',repair_allow_data_loss)
修復(fù)指定表:
use master ALTER DATABASE UFDATA_015_2020 SET SINGLE_USER WITH ROLLBACK IMMEDIATE go use UFDATA_015_2020 go --DBCC checkdb(UFDATA_015_2020,REPAIR_ALLOW_DATA_LOSS) dbcc checktable('sys.syscolpars',repair_allow_data_loss) go ALTER DATABASE UFDATA_015_2020 SET MULTI_USER
檢查指定表或索引視圖的數(shù)據(jù)、索引及test、ntest和image頁的完整性
DBCC DBREINDEX(表) 重建指定數(shù)據(jù)庫表的一個或多個索引
重建索引 DBCC INDEXDEFRAG
清理碎片:定期重建或重新組織索引可以減少碎片。使用DBCC INDEXDEFRAG命令可以對索引進行碎片整理。
重建全庫索引:
exec sp_msforeachtable 'DBCC DBREINDEX(''?'')' --需要單用戶模式
--更新全部統(tǒng)計信息
exec sp_updatestats --需要單用戶模式
DBCC CHECKIDENT
--設(shè)置數(shù)據(jù)庫在線:
ALTER DATABASE JAC20TMES SET ONLINE;
正在恢復(fù)數(shù)據(jù)庫 'ECU'。請等待恢復(fù)操作完成,設(shè)置數(shù)據(jù)庫取消恢復(fù)
USE master; GO ALTER DATABASE JAC20TMES SET SINGLE_USER WITH ROLLBACK IMMEDIATE; ALTER DATABASE JAC20TMES SET MULTI_USER; GO ALTER DATABASE JAC20TMES SET ONLINE; RESTORE DATABASE JAC20TMES WITH RECOVERY
檢查指定的當前標識值
這意味著運行了DBCC CHECKDB,就不必再單獨運行DBCC CHECKALLOC、DBCC CHECKTABLE或DBCC CHECKCATALOG命令。也意味著單獨運行DBCCCHECKALLOC、DBCC CHECKTABLE和DBCCC HECKCATALOG命令,雖然不能完全完成DBCC CHECKDB的所有功能,但是至少完成了大部分功能。
1、快速修復(fù) DBCC CHECKDB ('數(shù)據(jù)庫名', REPAIR_FAST) 2、重建索引并修復(fù) DBCC CHECKDB ('數(shù)據(jù)庫名', REPAIR_REBUILD) 3、如果必要允許丟失數(shù)據(jù)修復(fù) DBCC CHECKDB ('kmadv_v9', REPAIR_ALLOW_DATA_LOSS)
停止并重啟SQL Server服務(wù)。在某些情況下,停止SQL Server服務(wù)并清除所有相關(guān)進程,然后重啟服務(wù),可以解決數(shù)據(jù)庫的問題。 分離并附加數(shù)據(jù)庫。如果問題涉及日志文件,可以嘗試分離數(shù)據(jù)庫,備份日志文件,然后附加數(shù)據(jù)庫并讓其自動重新創(chuàng)建日志文件。
http://www.jdki.com.cn/news/detail/381.html
ALTER DATABASE <DB_Name>SET EMERGENCY
這種方法能夠從數(shù)據(jù)庫中將所有能讀出來的數(shù)據(jù)都讀出來,挽救盡可能多的數(shù)據(jù)。
下面的示例報告 Employee
數(shù)據(jù)庫中 AdventureWorks2022
表的已更新頁計數(shù)或行計數(shù)信息。
DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee');
根據(jù)備份恢復(fù)指定頁:
restore database yourdb page= '1:94299' from disk='D:\DBBak\yourdb.bak' with norecovery (沒有恢復(fù))
restore database yourdb page= '1:94299' from disk='D:\DBBak\yourdb.bak' with recovery
更新表中特定索引的頁計數(shù)和/或行計數(shù) 下面的示例將 IX_Employee_ManagerID
指定為索引名稱。
DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee', IX_Employee_OrganizationLevel_OrganizationNode); GO
廣告: