http://wanna51.blog.163.com/blog/static/21560362007729104325967/
MS sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令。
1. DBCC CHECKDB
重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下sql进行数据库的修复,修复数据库存在的一致性错误与分配错误。
use master
declare @databasename varchar(255)
set @databasename='需要修复的数据库实体的名称'
exec sp_dboption @databasename,N'single',N'true' --将目标数据库置为单用户状态
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
dbcc checkdb(@databasename,REPAIR_REBUILD)
exec sp_dboption @databasename,N'false'--将目标数据库置为多用户状态
然后执行 DBCC CHECKDB('需要修复的数据库实体的名称') 检查数据库是否仍旧存在错误。注意:修复后可能会造成部分数据的丢失。
2. DBCC CHECKTABLE
如果DBCC CHECKDB 检查仍旧存在错误,可以使用DBCC CHECKTABLE来修复。
declare @dbname varchar(255)
exec sp_dboption @dbname,'single user','true'
dbcc checktable('需要修复的数据表的名称',REPAIR_ALLOW_DATA_LOSS)
dbcc checktable('需要修复的数据表的名称',REPAIR_REBUILD)
------把’ 需要修复的数据表的名称’更改为执行DBCC CHECKDB时报错的数据表的名称
exec sp_dboption @dbname,'false'
3. 其他的一些常用的修复命令
DBCC DBREINDEX 重建指定数据库中表的一个或多个索引
用法:DBCC DBREINDEX (表名,’’) 修复此表所有的索引。
还有其他很多修复命令,诸如DBCC CHECKIDENT 等等,用到的概率比较小,大家可以在ms sql server 的 联机丛书中检索一下。
实际应用中会遇到的现象有:
1.在阅读器关闭时 Read 的尝试无效。
--地宝原创,转贴请注明出自微软BI开拓者www.windbi.com
很多朋友在2005中遇到置疑、丢失日志时按照网上常见的MSsql2000修复方法来做,
结果发现行不通,甚至连一步都做不下去。其实,在MSsql2005在处理置疑问题的思
路与MSsql2000是一致的,但具体到一些语句上MSsql2005 有了很大的变动。我们以
1.MSsql2000在日志被误删除后会提示置疑(SUSPECT),而在MSsql2005中却没有特
殊标志,但图标前的”+”不见了当你查询数据库属性时会有Error:945提示:
2.顺着老思路,首先我们想到先进入紧急模式:
MSsql2000进入紧急模式:
Use Master
Go
sp_configure 'allow updates',1
reconfigure with override
Go
update sysdatabases set status = 32768 where name = 'dbname'
alter database dbname set emergency
3.重建日志文件
MSsql2000使用DBCC REBUILD_LOG。
在MSsql2005中没有了DBCC REBUILD_LOG
可MSsql2005中是使用dbcc checkdb('capture',REPAIR_ALLOW_DATA_LOSS)。
当然要想使用dbcc checkdb我们得进入单用户模式:
sp_dboption 'dbname','true'
或
alter database dbname set single_user(推荐使用后者)
4.再运行dbcc checkdb看看是否有损坏的页(我会再写一篇专题讨论修复损害页)
5.恢复多用户模式
sp_dboption 'dbname','false'
或
alter database dbname set multi_user(推荐使用后者)
6.恢复非紧急模式
alter database dbname set online
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。