dbcc dbreindex server sql_DBCC DBREINDEX Sql数据库表修复

寒山

sql

数据库修复中心

http://www.qjsmw.com/

MS Sql Server

数据库或表修复

数据库或表修复

(DBCC CHECKDB)

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_DA

TA_LOSS)

dbcc

checktable('

',REPAIR_REBUILD) ------

把’

需要修复的数据表的名称’更改为执行

DBCC CHECKDB

时报错

的数据表的名称

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

其他的一些常用的修复命

DBCC

DBREINDEX

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

用法:

DBCC

DBREINDEX

(

,

)

修复此表所有的索引。

===================================

SQL

SERVER

数据库的检测及修复方法

随着

K/3

产品的推广,

要求客户服务人员对

SQL

SERVER

数据库的了解也进一步提高。

K/3

的使用过程中,数据库文件被频繁地使

用,由于某些原因,数据库有可能被损坏,本文将针对这

种情况的数据库检测及修复方法

做一简单讲解。

希望各位在实际工作过程中有新的发现时,

及时

给我们提供信息,以便

做进一步的更新。

1.1

SQL

SERVER

数据库的检测

SQL

SERVER

提供了数据库检测的命令,

可用

DBCC CHECKDB

对数据库中各个对象的分配

及结构的正确性进行检测,

并可通过一参

数控制,将所有的错误信息显示出来。其语法如下:

DBCC

CHECKDB

('database_name'

[,NOINDEX

|

{

REPAIR_ALLOW_DATA_LOSS

|

REPAIR_FAST

|

REPAIR_REBUILD

}]

)

[WITH

{ALL_ERRORMSGS

|

NO_INFOMSGS}]

参数说明:

'database_name'

代表被检测的数据库实体

名;

NOINDEX

指非系统表的非聚族索引不检测;

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST|

REPAIR_REBUILD

指直接修复发现的

错误,其中

REPAIR_ALLOW_DATA_LOSS

代表,若此错

误不能修复时,系统将直接删除相

关数据。带此三个参数的任一个时,数据库必须处于单

用户模式,可在

Enterprise

Manager

中的数据库属性中设置;

ALL_ERRORMSGS

代表将检

测到的错误信息全

部显示出来

否则,

对于每张表

最多只显示

200

条错

误信息;

NO_INFOMSGS

代表隐藏所有的信息及占用空间的报告。

经过检测,

对于错误的对象,

OBJECT ID

的形式报告具体出错的信息,

可根据

OBJECT ID

到系统表

sysobjects

中查找

到相关的表,即

NAME

1.2 SQL SERVER

问题数据库的修复

经过数据库检测后,可针对出现的问题采取相应的

措施进行处理。

如通过检测后,

发现对象的物

理存放存在问题,

可用

DBCC CHECKALLOC

DBCC

CHECKALLOC

('database_name'

|

REPAIR_REBUILD

}]

)

[WITH

{ALL_ERRORMSGS | NO_INFOMSGS}]

若是非系统对象的索引出错,则可用

DBCC DBREINDEX

进行修复:

DBCC DBREINDEX ( [ 'database.owner.table_name' [, index_name

[, fillfactor ]

] ] )

[WITH

NO_INFOMSGS]

使

DBCC

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值