
处理数据库置疑的方法
处理数据库置疑的方法
先分离数据库
企业管理器--右键置疑的数据库--所有任务--分离数据库
然后备份你的置疑数据库的文件,再按下面的步骤处理:
1.新建一个同名的数据库
2.再停掉sqlrver
3.用置疑数据库的文件覆盖掉这个新建的同名数据库,只覆
盖mdf文件,日志文件不要覆盖
4.再重启sqlrver
5.此时打开企业管理器时新建的同名数据库会出现置疑,先
不管,打开查询分析器执行下面的语句(注意修改其中的数据库
名)
重建日志文件,经过修复后数据就可以正常分离并附加了,
语句中“C:置疑的同名数据库名_”是重建日志日志文件存
放路径,
在重建日志后,最好将数据库分离并将重新创建的日志文件
拷贝到数据库文件所在目录,再重新进行附加。
--重建日志文件,修复损坏的日志
USEMASTER
GO
SP___RE'ALLOW__',1__GUREWITH__E
GO
UPDATE__BASESSETSTATUS=__WHERENAME='置疑的同
名数据库名'
Go
dbccrebuild_log('置疑的同名数据库名','C:置疑的同名数据
库名_')
GO
updatesysdatabaststatus=28wherename='置疑的同
名数据库名'
Go
sp_configure'allowupdates',0reconfigurewithoverride
Go
6、数据库修复后还需要进行数据库检测,看是否存在一些
错误,数据库检测需要用DBCC__命令,如下:
DBCC__('置疑的同名数据库名')
如果检测到错误,需要进行修复,但修复数据库需要在单用
户模式下,请使用以下语句,
ALTER__E置疑的同名数据库名SETSINGLE_USERWITH
__K__TE
GO
DBCC__('置疑的同名数据库名',REPAIR___)
GO
ALTER__E置疑的同名数据库名SETMULTI_USERWITH__K
__TE
GO
如果还有错误,执行下面的语句
DBCC__('数据库名',REPAIR_ALLOW_DATA_LOSS)
-------(执行一次如果还有错误,可以多执行几次)
7、有时通过DBCC__能够修复数据库中的错误,但有时不
能修复,可能需要对单个有问题的数据表进行修复,需要使用
DBCC__BLE('有问题的数据表名',REPAIR___)命令,详细请看
联机帮助
8、DBCC__命令介绍
检查指定数据库中的所有对象的分配和结构完整性。
语法
DBCC__
('databa_name'
[,__
|{REPAIR_ALLOW_DATA_LOSS
|REPAIR_FAST
|REPAIR___
}]
)[WITH{[ALL___GS]
[,[NO___S]]
[,[__]]
[,[__EONLY]]
[,[__L_ONLY]]
}
]
参数
'databa_name'
是要对其中的所有对象分配和结构完整性进行检查的数据
库。如果未指定,则默认为当前数据库。数据库名称必须符合标
识符的规则。有关更多信息,请参见使用标识符。
__
指定不检查非系统表的非聚集索引。__减少执行总时间,因
为它不对用户定义的表的非聚集索引进行检查。__对系统表没
有影响,因为DBCC__总是对所有系统表索引进行检查。
REPAIR_ALLOW_DATA_LOSS|REPAIR_FAST|REPAIR___
指定DBCC__修复发现的错误。给定的databa_name
必须在单用户模式下以使用修复选项,它可以是下列值之一。
值描述
REPAIR_ALLOW_DATA_LOSS执行由REPAIR___完成的所
有修复,包括对行和页进行分配和取消分配以改正分配错误、结
构行或页的错误,以及删除已损坏的文本对象。这些修复可能会
导致一些数据丢失。修复操作可以在用户事务下完成以允许用户
回滚所做的更改。如果回滚修复,则数据库仍会含有错误,应该
从备份进行恢复。如果由于所提供修复等级的缘故遗漏某个错误
的修复,则将遗漏任何取决于该修复的修复。修复完成后,备份
数据库。REPAIR_FAST进行小的、不耗时的修复操作,如修复
非聚集索引中的附加键。这些修复可以很快完成,并且不会有丢
失数据的危险。
REPAIR___执行由REPAIR_FAST完成的所有修复,包括需
要较长时间的修复(如重建索引)。执行这些修复时不会有丢失
数据的危险。
WITH
指定有关下列内容的选项:返回错误信息的数量、获得的锁
或估计的tempdb要求。
ALL___GS
显示每个对象不受限制的错误数。如果没有指定ALL___GS,
每个对象至多显示200个错误信息。按对象ID对错误信息进
行排序(从tempdb中生成的消息除外)。
NO___S
禁止显示所有信息性消息(严重级别10)和关于所用空间
的报告。
__
导致DBCC__获得共享表锁。__可使DBCC__在负荷较
重的数据库上
运行得更快,但DBCC__运行时会减少数据库上可获得的
并发性。
__EONLY
显示估计的tempdb空间大小,要运行带有所有其它指定
选项的DBCC__则需要该空间。不执行该检查。
__L_ONLY
仅限于检查页和记录标题物理结构的完整性,以及页对象
ID和索引ID与分配结构之间的一致性。该检查旨在以较低的
开销检查数据库的物理一致性,同时还检测会危及用户数据安全
的残缺页和常见的硬件故障。__L_ONLY始终意味着NO___S,并
且不能与任何修复选项一起使用。
注释
DBCC__对索引视图执行物理一致性检查。只用于向后兼容
的__选项也适用于索引视图上的任何辅助索引。
DBCC__是最安全的修复语句,因为它对最多的可能出现的
各种错误进行标识和修复。如果只报告数据库中有分配错误,请
执行带修复选项的DBCC__LOC以对这些错误进行修复。然而,
若要确保正确修复所有错误(包括分配错误),请执行带修复选
项的DBCC__,而不要执行带修复选项的DBCC__LOC。
DBCC__对数据库中所有内容的完整性进行验证。如果当前
正在执行或最近已执行DBCC__,则不需要运行DBCC__LOC
或DBCC__BLE。
DBCC__执行同样的检查,仿佛是对数据库中的每个表执行
DBCC__LOC语句和DBCC__BLE语句。
默认情况下,DBCC__不获取表锁。但它获取架构锁,该锁
防止对元数据进行更改,但允许更改数据。获取的架构锁将防止
用户得到排它表锁,在生成聚集索引、除去任何索引或截断表时
需要排它表锁。
DBCC语句收集信息,然后扫描日志以查找所做的任何其它
更改,并在扫描的结尾将两组信息合并在一起以产生数据的一致
视图。
如果指定__选项,DBCC__将获取共享表锁。这样可允许
某些类别的错误有更详细的错误信息,并通过避免使用事务日志
数据而将所要求的tempdb空间大小降为最低。__选项不阻止
日志截断并使命令可以更快地运行。
DBCC__对数据库中每个表的text、ntext和image页的
链接和大小及数据库中所有页的分配进行检查。
对于数据库中每个表,DBCC__检查其:
索引和数据页是否已正确链接。
索引是否按照正确的顺序排列。
各指针是否一致。
每页上的数据是否均合理。
页面偏移量是否合理。
错误表示数据库中的潜在问题,应该立即改正。
默认情况下,DBCC__对对象执行并行检查。并行度由查询
处理器自动确定。最大并行度的配置方式与并行查询相同。使用
sp_configure系统存储过程限制可用于DBCC检查的最大处理
器数。有关更多信息,请参见maxdegreeofparallelism选项。
使用跟踪标记2528可禁用并行检查。有关更多信息,请参
见跟踪标记。
结果集
不管是否指定任何选项(NO___S或__选项除外),如果未
指定数据库,DBCC__返回当前数据库的以下结果集(值可能会
变化):
DBCCresultsfor'master'.
DBCCresultsfor'sysobjects'.
DBCCresultsfor'sysindexes'.
Thereare80rowsin3pagesforobject'sysindexes'.
'...'
DBCCresultsfor'spt_provider_types'.
Thereare23rowsin1pagesforobject'spt_provider_types'.
__found0allocationerrorsand0consistencyerrorsin
databa'master'.
printederrormessages,
contactyoursystemadministrator.
如果指定NO___S选项,DBCC__将返回以下结果集(消
息):
Thecommand(s)completedsuccessfully.
如果指定__EONLY选项,DBCC__将返回以下结果集。
EstimatedTEMPDBspaceneededfor__LOC(KB)
-------------------------------------------------
13
(1row(s)affected)
EstimatedTEMPDBspaceneededfor__BLES(KB)
--------------------------------------------------
57
(1row(s)affected)
printederrormessages,
contactyoursystemadministrator.
权限
DBCC__权限默认授予sysadmin固定服务器角色或
db_owner固定数据库角色的成员且不可转让。
示例
A.检查当前数据库和pubs数据库
下例对当前数据库和pubs数据库执行DBCC__。
--Checkthecurrentdataba.
DBCC__
GO
--Checkthepubsdatabawithoutnonclusteredindexes.
DBCC__('pubs',__)
GO
B.检查当前数据库,禁止显示信息性消息
下例检查当前数据库,并禁止显示所有信息性消息。
DBCC__WITHNO___S
GO
-------李庆军修改
UMaster
Go
sp_configure'allowupdates',1
reconfigurewithoverride
Go
updatesysdatabaststatus=__wherename='accdb'
dbccrebuild_log(accdb)
updatesysdatabaststatus=28wherename='accdb'
Go
sp_configure'allowupdates',0reconfigurewithoverride
Go
DBCC__('Accdb')
ALTER__EAccdbSETSINGLE_USERWITH__K__TE
GO
DBCC__('Accdb',REPAIR___)
GO
ALTER__EAccdbSETMULTI_USERWITH__K__TE
GO
DBCC__('Accdb',REPAIR_ALLOW_DATA_LOSS)
本文发布于:2023-03-11 08:29:16,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/167849455623960.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:DBCC.doc
本文 PDF 下载地址:DBCC.pdf
| 留言与评论(共有 0 条评论) |