sqlserver 常用的修复命令

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'single', N'false'--将目标数据库置为多用户状态

然后执行 DBCC CHECKDB('需要修复的数据库实体的名称') 检查数据库是否仍旧存在错误。注意:修复后可能会造成部分数据的丢失。

2. DBCC CHECKTABLE

如果DBCC CHECKDB 检查仍旧存在错误,可以使用DBCC CHECKTABLE来修复。

use 需要修复的数据库实体的名称

declare @dbname varchar(255)

set @dbname='需要修复的数据库实体的名称'

exec sp_dboption @dbname,'single user','true'

dbcc checktable('需要修复的数据表的名称',REPAIR_ALLOW_DATA_LOSS)

dbcc checktable('需要修复的数据表的名称',REPAIR_REBUILD)

------把’ 需要修复的数据表的名称’更改为执行DBCC CHECKDB时报错的数据表的名称

exec sp_dboption @dbname,'single user','false'

3. 其他的一些常用的修复命令

DBCC DBREINDEX 重建指定数据库中表的一个或多个索引

用法:DBCC DBREINDEX (表名,’’) 修复此表所有的索引。

还有其他很多修复命令,诸如DBCC CHECKIDENT 等等,用到的概率比较小,大家可以在ms sql server 的 联机丛书中检索一下。

 

实际应用中会遇到的现象有:

1.在阅读器关闭时 Read 的尝试无效。

 

MSSQL2005处理数据库置疑

--地宝原创,转贴请注明出自微软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'

MSSQL2005进入紧急模式的方法简单了

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', 'single user','true'

alter database dbname set single_user(推荐使用后者)

4.再运行dbcc checkdb看看是否有损坏的页(我会再写一篇专题讨论修复损害页)

5.恢复多用户模式

sp_dboption 'dbname', 'single user','false'

alter database dbname set multi_user(推荐使用后者)

6.恢复非紧急模式

alter database dbname set online

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值