admin管理员组文章数量:1794759
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 再修改就好了版权声明:本文标题:SqlServer数据库修复(dbcc checkdb) 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686655819a91235.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论