-
DBCC CHECKDB
数据库或表修复
MS Sql Server
提供了很多数据库修复的命令,
当数据库质疑或是有的无法完成读取时可以尝
试这些修复命令。
1.
DBCC CHECKDB
<
/p>
重启服务器后,在没有进行任何操作的情况下,在
SQL
查询分析器中执行以下
SQL
进行
数据库的修复,修复数据库存在的一致性错误与分配错误。
use master
declare @databasename varchar(255)
set @databasename='
< br>需要修复的数据库实体的名称
'
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)
------
把
’
< br>需要修复的数据表的名称
’
更改为执行
< br>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 CHE
CKDB
对数据库中各个对象的分配
及结构的正确性进行检测,
并可通过一参数控制,将所有的错误信息显示出来。其语法如下:
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
代表隐藏所有的信息及占用空间的报告。
< br>
经过检测,
对于错误的对象
,
将以
OBJECT ID
的形式报告
具体出错的信息,
可根据
OBJECT ID
< br>到系统表
sysobjects
中查找到相关的表,即<
/p>
NAME
。
1.2 SQL
SERVER
问题数据库的修复
<
/p>
经过数据库检测后,
可针对出现的问题采取相应的措施进行处理。
如通过检测后,
发现对象的物
理存放存
在问题,可用
DBCC
CHECKALLOC
来进行修复:
DBCC CHECKALLOC ('database_name' |
REPAIR_REBUILD }] ) [WITH
{ALL_ERRORMSGS | NO_INFOMSGS}]
若是非系统对象的索引出错,则可用
DBCC
DBREINDEX
进行修复:
DBCC DBREINDEX ( [ '_name' [,
index_name [, fillfactor ] ] ] )
[WITH
NO_INFOMSGS]
以上两种情况,也可直接使用
DBCC CHECKDB(‘d
b_name’,repair_rebuild)
来修复。
另外一种情况是在进行检测时,提示无法建立数据连接,此时
表明,数据库已损坏。
对于这种情
况,我们可采取如下措施来尝
试修复。
首先,在
SQL Enterprise
中新建一数据库(如数据库名为
test
)
< br>,
建好数据库后,停止
SQL
Server Service Manager
,并将客户数
据库的
MDF
文件更名为
test _
(
即新建数据
库的主文件名
)
,然后用更名后的文件覆盖新建数据库同名文件,接着,启动
SQL
Server
Service Manager
。对
Master
数据库将系统表设置为可更改状态
Use Master
Go
sp_configure
'allow updates', 1
reconfigure with override
Go
将数据库设为紧急状态:
update sysdatabases set status = 32768
where database '
停止并重新启动
SQL Server Service Ma
nager
,并重建
Log
文件:
p>
DBCC TRACEON
(3604)
DBCC REBUILD_LOG('
test ','test _log_ldf')
-
-
-
-
-
-
-
-
-
上一篇:乔迁英文祝福语
下一篇:启动电脑时有哪些不必要的服务可以禁用