admin管理员组

文章数量:1794759

SqlServer数据库修复(dbcc checkdb)

SqlServer数据库修复(dbcc checkdb)

之前遇到了一个客户现场问题,支持时发现是数据库报错,导致对应的记录删除,修改操作不能成功,搜索了解决办法,测试成功,方法如下:

报错信:

**/**/**** 14:17:25,spid59,未知,Attempt tofetch logical page (3:509) in database 11 failed. It belongs to allocation unit72057594611695616 not to 72057594041991168.

**/**/**** 14:17:25,spid59,未知,错误: 605,严重性: 21,状态: 3。

数据库损坏错误。

严重级别为 21 表示可能存在数据损坏。 可能的原因包括损坏的页链、损坏的 IAM 或该对象的 sys.objects目录视图中存在无效条目。 这些错误通常由硬件或磁盘设备驱动程序故障而引起。

--修复方案: --执行如下过程: use master declare @databasename varchar(255) set @databasename='****_db' alter database ****_db set Single_user --单用户 --exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态 sql08 dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(@databasename,REPAIR_REBUILD) alter database ****_db set multi_user --多用户 -- exec sp_dboption @databasename, N'single', N'false' --将目标数据库置为多用户状态 sql08,12版不存在sp_dboption该存储过程。

执行时间较长建议无业务或业务逻辑较少的时间执行该过程。

SqlServer 切换数据库为单用户和多用户模式

有时候数据库在占用时,想做一些操作,无法操作。可以尝试将数据库切换为单用户模式来操作。操作完之后再切换回多用户模式。

命令如下:

alter database 数据库名 set Single_user  --单用户alter database 数据库名 set multi_user   --多用户

或者

sp_dboption 数据库名,"single user",true  --单用户

sp_dboption 数据库名,"single user",false  --多用户

如果使用 ALTER DATABAS 或者是使用 SP_DBOPTION 都没有办法更改到多用户或者单用户模式下 解决办法是 在活动和监视器中的进程,把与目的库有关的 KILL 掉,然后刷新一下。 使用 ALTER DATABASE DB_TYZ 再修改就好了

本文标签: 数据库sqlservercheckdbdbcc