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