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)
检查指定表或索引视图的数据、索引及test、ntest和image页的完整性
DBCC DBREINDEX(表) 重建指定数据库表的一个或多个索引
重建索引 DBCC INDEXDEFRAG
清理碎片:定期重建或重新组织索引可以减少碎片。使用DBCC INDEXDEFRAG命令可以对索引进行碎片整理。
重建全库索引:
exec sp_msforeachtable 'DBCC DBREINDEX(''?'')' --需要单用户模式
--更新全部统计信息
exec sp_updatestats --需要单用户模式
DBCC CHECKIDENT
检查指定的当前标识值
这意味着运行了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.ysneo.com/news/detail/381.html
ALTER DATABASE <DB_Name>SET EMERGENCY
这种方法能够从数据库中将所有能读出来的数据都读出来,挽救尽可能多的数据。
下面的示例报告 Employee
数据库中 AdventureWorks2022
表的已更新页计数或行计数信息。
DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee');
更新表中特定索引的页计数和/或行计数 下面的示例将 IX_Employee_ManagerID
指定为索引名称。
DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee', IX_Employee_OrganizationLevel_OrganizationNode); GO
广告: