sql数据库置疑怎么处理

sql数据库置疑怎么处理,第1张

修复方法

1

打开SQL企业管理器

按序打开 ,开始--所有程序(或程序)--Microsoft SQL Server--企业管理器

打开后按序点+号展开直到数据库

请点击输入图片描述

请点击输入图片描述

2

右键显示置疑的数据库--所有任务--分离数据库。

d出对话框点击确定。

注,先记住数据库名。分离有时候会提示分离失败,右键随便一个数据库--刷新,就可以看到已经没了。

请点击输入图片描述

3

找到该置疑数据库的源文件,剪切到其他文件夹黏贴。

注,一般是同名的两个文件,后缀为*.mdf和*.ldf。

请点击输入图片描述

4

返回企业管理器新建一个同名的数据库名

右键随便一个数据库--新建数据库

d出对话框中名称输入数据库名

然后点击上方选项卡数据文件,点后面的位置下的省略号选择存放路径,并把文件名改成和置疑数据库源文件名一样,然后确定

再点击上门选项卡事务日志,一样 *** 作后确定。

请点击输入图片描述

请点击输入图片描述

请点击输入图片描述

停止SQL服务

右键数据库上的服务器名--停止,d出提示点是。

请点击输入图片描述

打开新建数据库所在路径,把之前备份的置疑数据库的源文件.MDF后缀的复制过来覆盖,删掉新建数据库的后缀LDF的源文件。

启动SQL

右键数据库的服务器名--启动。

请点击输入图片描述

设置数据库允许直接 *** 作系统表

点击上方的工具--SQL查询分析器--输入下列语句

sp_configure  'allow updates',1 reconfigure with override

点击上方竖三角号执行(或按F5)

或右键选择数据库服务器--属性--服务器设置,将“允许对系统目录直接修改”打钩,确定。

请点击输入图片描述

设置要修复的数据库为紧急修复模式

删掉之前的语句,输入下列语句

update sysdatabases set status=32768 where name='数据库名'

注,数据库名记得改成你实际的。

点击上方竖三角号执行(或按F5)

请点击输入图片描述

重建数据库日志文件

删掉之前的语句(也可再前面语句前输入--),输入下列语句

DBCC TRACEON (3604)

DBCC rebuild_log('数据库名','数据库路径\数据库名.ldf')

注,数据库名和日志文件按实际修改。

点击上方竖三角号执行(或按F5)

提示如图视为成功

请点击输入图片描述

验证数据库一致性(虽然可以省略但是不易建议跳过)

删掉之前的语句(也可再前面语句前输入--),输入下列语句

dbcc checkdb('数据库名')

注,数据库名按实际修改。

点击上方竖三角号执行(或按F5)

请点击输入图片描述

设置数据库为恢复正常状态

删掉之前的语句(也可再前面语句前输入--),输入下列语句

update sysdatabases set status=0 where name='数据库名'

注,数据库名按实际修改。

点击上方竖三角号执行(或按F5)

请点击输入图片描述

设置数据库‘允许直接 *** 作系统表’取消

点击上方的工具--SQL查询分析器--输入下列语句

sp_configure  'allow updates',0 reconfigure with override

点击上方竖三角号执行(或按F5)

或右键选择数据库服务器--属性--服务器设置,将“允许对系统目录直接修改”打钩取消,确定。

请点击输入图片描述

重启SQL。

请点击输入图片描述

请点击输入图片描述

修复数据库前,请做好相关备份。最好不要前后台相连,以免造成不必要的数据丢失。我们以名为“kspos”的数据库为例。1.首先把服务管理器先停止,把原来置疑的数据库下的两个文件拷贝出来,

启动服务管理器,在企业管理器中删除该数据库,然后建立一个同名的数

据库。停止服务管理器,把置疑的数据库文件拷贝进去覆盖。2.运行中输入“isqlw”,打开查询分析器。3.输入语句USE

MASTER

GOSP_CONFIGURE

'ALLOW

UPDATES',1

RECONFIGURE

WITH

OVERRIDE

GOUPDATE

SYSDATABASES

SET

STATUS

=-32768

WHERE

NAME='kspos'

Go使数据库处于紧急修复模式4.输入语句:use

kspos

go

dbcc

checkdb

('kspos')

此语句作用在于查询数据库的损坏状况。5.删除原来的日志文件,重新建立新的日志文件。

DBCC

REBUILD_LOG

('kspos','D:\Program

Files\Microsoft

SQL

Server\MSSQL\Data\bw9kyy_01_Log.LDF'

)6.右击kspos数据库\属性\选项\选择单用户。7.修复

dbcc

checkdb

('kspos',REPAIR_ALLOW_DATA_LOSS)

REPAIR_ALLOW_DATA_LOSS

执行由

REPAIR_REBUILD

完成的所有修复,包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,以及删除已损坏的文本对象。这些修复可能会导致一些数据丢失。修复 *** 作可以在用户事务下完成以允许用户回滚所做的更改。如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。修复完成后,备份数据库。

REPAIR_FAST

进行小的、不耗时的修复 *** 作,如修复非聚集索引中的附加键。这些修复可以很快完成,并且不会有丢失数据的危险。

REPAIR_REBUILD

执行由

REPAIR_FAST

完成的所有修复,包括需要较长时间的修复(如重建索引)。执行这些修复时不会有丢失数据的危险。

8.关闭单用户模式,在企业管理器中直接右击kspos\属性\选项,把前面的对

勾去掉即可。

然后在查询分析器中执行如下语句:

USE

MASTER

GO

SP_CONFIGURE

'ALLOW

UPDATES',0

RECONFIGURE

WITH

OVERRIDE

GO

到此修复工程完毕。注:一般此修复步骤需要5-8次,只需执行第7步即可。 这个方法绝对好用。

1、在实际的 *** 作中由于突然断电或者突然断网造成数据库置疑(在企业管理器中数据库后面出现置疑两个字),下面我们通过以下方法来进行修复置疑的数据库。

2、我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。

3、停掉数据库服务器。

4、将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。

5、启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何 *** 作。

6、设置数据库允许直接 *** 作系统表。此 *** 作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9993501.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存