关键词不能为空

当前您在: 主页 > 英语 >

质疑的数据库

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-24 14:42
tags:

-

2021年2月24日发(作者:abbreviation)



资料一







1


、停止数据库服务器,将数据库


MDF


文件 和


LDF


文件复制备份一份



2


、启动数据库服务器,删除置疑的数据库


< /p>


3


、仅用备份的数据库


MDF

< p>
文件附加数据库,


sp_attach_db


或者


sp_attach_single_file_db



以附加数据库,出现类似下面的提示信息:







错< /p>










'C:/Program


Files/Microsoft


SQL


Server/MSSQL/data/myDb_'


可能有误。



已创建名为



'C:/Program


Files/Microsoft


SQL


Server/MSSQL/Data/myDb_'


的新日志文


件。


这个表明数据库附加成功,问题解决了,


如果成功则要恭喜你了,

< br>反正我是符加不成功,提


示类似下面的错误信息



未能打开新数据库



'myDb'



CREATE DATABASE


将终止。



设备激活错误。物理文件名



'e:/www/myDb_'


可能有误。



此时我用了以下方法解决 (参考了网上的方法)







A


.我们


SQL SERVER


企业管理器新建立一个供恢复使用的同名数据库


(

注意:要跟问题数


据库同名,本例中为


myDb)







B


.停掉数据库服务器。






C



将刚才生成的数据库的日志文件


myDb _


删除


(本例中的示列数据库名,


实际 使


用您自己的数据库名称)


,用刚才备份的数据库


mdf


文件覆盖新生成的数据库数据文件


myDb_







D


.启动数据库服务器。此时会看到 数据库


myDb


的状态为“置疑”


。这 时候不能对此数


据库进行任何操作。






E


.设置 数据库允许直接操作系统表。此操作可以在


SQL


Server


Enterprise


Manager


里面


选择数据库服务器,按右


--


键,选择“属性”


,在“服务器设置”页面中将“ 允许对系统目


录直接修改”一项选中。也可以使用如下语句来实现。


use master


go


sp_configure 'allow updates',1


go



reconfigure with override


go




F


.设置


m yDb


为紧急修复模式









在查询管理器里设置如下命令:



update


sysdatabases


set


status=-32768


where


dbid=DB_ID('myDb')


此时可以在


SQL


Server


Enterprise Manager


里面看到该数据库处于 “只读


/


置疑


/


脱机


/


紧急模式”可以看到数据库里


面的表,但是仅仅有系统表






G


.下面执行真正的恢复操作,重建 数据库日志文件



dbcc


rebuild_log('myDb','C:/Program


Files/Microsoft


SQL

< br>Server/MSSQL/Data/myDb_')




:


数据库



'myDb'


的日志已重建。


已失去 事务的一致性。


应运行



DBCC CHECKDB


以验证物


理一致性。将必须重置数据库选项, 并且可能需要删除多余的日志文件。



DBCC


执行完毕。如果



DBCC


输出了错误信息,请与系统管理员联系。



此时打开在


SQL Server Enterprise M anager


里面会看到数据库的状态为


“只供


DBO


使用”



< p>
时可以访问数据库里面的用户表了。






H


.验证数据库一致性(可省略)



dbcc checkdb('myDb')


一般执行结果如下:



CHECKDB


发现了



0


个分配错误和



0


个一致性错误(在数据库



'myDb'


中)




DBCC


执行完毕。如果



DBCC


输出了错误信息,请与系统管理员联系。






I


.设置数据库为正常状态



sp_dboption 'myDb','dbo use only','false'




J


.最后一步,我们要将步骤


E


中设置的 “允许对


系统目录直接修改”


一项恢复。


因为平时直接操作系统表是一件比较危险的事情。


当然,我


们 可以在


SQL Server Enterprise Manager


里面恢复,也可以使用如下语句完成



sp_configure 'allow updates',0


go



reconfigure with override


go



到此数据库置疑问题解决。










资料二







MS SQL SERVER


数据库置疑后恢复步骤




--SQL SERVER


数据库置疑后恢复步骤






--1




恢复步骤:






--a.



smlog_


文件备份到其它目录下;






- -b.


将源目录下的


smlog_


文件 改名为


smlog_log_







--c .


执行以下语句修改数据库的状态:






use Master





go





update sysdatabases set status=32768 where name='


数据库名称


'






--


修改状态


,


設 為緊急狀





go





shutdown with nowait






--


停止数据库服务器






go





--d .


退出


SQL


并在

(COMMAND)


命令行模式中通过下面的代码重新启动


SQL







sqlservr -c -T3608 -T4022






--


安全模式启动


SQL SERVER


--e.


在查询分析器中执行以下语句来查看刚 刚修改过状态的数据库状态:






select Name,Status from sysdatabases where Name='


数据库名稱


'




--f.


执行以下代码新建日志文件:






dbcc traceon(3604)--


跟踪






dbcc rebuild_log('


数据库名称

< p>
','


日志文件全路徑


') --


文件名要有全路径和扩展名



--dbcc rebuild_log('prs_msc','d:/mscsql /mssql/data/prs_msc_


--g.


将数据库置回正常状态:






update sysdatabases set status=0 where name='


数据库名称


'





--h.


重新启动数据库后执行以下语句检查数据库:






DBCC CHECKDB --


如果执行完有错误用以下语句修复






--i .


要修复数据库必需将数据库改为单用户模式:






Exce sp_dboption '


数据库名称


','single user','true' ---('false'


恢复多用户


)





--j.


执行以下语句修复数据库:






DBCC CHECKDB('


数据库名称

',REPAIR_ALLOW_DATA_LOSS)





REPAIR_ALLOW_DA TA_LOSS


:是比较高级的修复方式






REP AIR_FAST


:是简单快速的修复方式



/*


處理状态就为


< br>置疑



的數據庫



备份数据文件


,


然后按下面的步骤处理


:




< br>1.


新建一个同名的数据库


(


数 据文件与原来的要一致


)





2.


再停掉


sql server(


注意不要分离数据库


)





3.< /p>


用原数据库的数据文件覆盖掉这个新建的数据库






4.


再重启


sql server





5.< /p>


此时打开企业管理器时会出现置疑,


先不管,

执行下面的语句


(注意修改其中的数据库名


)





6.< /p>


完成后一般就可以访问数据库中的数据了


,


这时


,


数据库本身一般还要问题


,< /p>


解决办法是


,



用数据库的脚本创建一个新的数据库


,


并将数据导进去就行了< /p>


.



*/


USE




MASTER





GO





SP_CONFIGURE 'ALLOW UPDATES',1


GO


RECONFIGURE WITH OVERRIDE





GO





UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='


置疑的数据库名


'





Go





sp_dboption '


置疑的数据库名


','single user','true'





Go





DBCC CHECKDB('


置疑的数据库名


')







Go





update sysdatabases set status=28 where name='


置疑的数据库名


'





Go





sp_configure 'allow updates',0


GO


reconfigure with override





Go







sp_dboption '


置疑的数据库名


', 'single user','false'





Go









/*


只有


mdf

文件的恢复技术



由于种种原因,我们如果当时仅仅备份了


mdf


文件,那么恢复起来就是一件很麻烦的事情


了。



如果您的


mdf


文件是当前数据库产生的,那么很侥幸,也许你使用


sp_atta ch_db


或者


sp_attach_single_file _db


可以恢复数据库,但是会出现类似下面的提示信息



设备激活错误。物理文件名



'C:/Program Files/Microsoft SQL Server/MSSQL/data/test_'


可能有误。



已创建名为



'C:/Program Files/Microsoft SQL Server/MSSQL/Data/test_'


的新日志文件。



但是,


如果您的数据库文件是从其他计算机上复制过来的,


那么很不幸,

< p>
也许上述办法就行


不通了。你也许会得到类似下面的错误信息



服务器


:


消息



1813


,级别



16


,状态



2


,行



1


未能打开新数据库



'test'



CREATE DATABASE


将终止。



设备激活错误。物理文件名



'd:/test_'


可能有误。



怎么办呢?别着急,下面我们举例说明恢复办法。



*/


--A


.我们使用默认方式建立 一个供恢复使用的数据库


(



test )


。可以在


SQL Server Enterprise


Manager


里面建立。



--B


.停掉数据库服务器。



--C


.将刚才生成的数据库的日志文件


te st_


删除,用要恢复的数据库


mdf


文件覆盖刚


才生成的数据库数据文件


test_




--D


.启动数据库服务 器。此时会看到数据库


test


的状态为“置疑”


。这时候不能对此数据库


进行任何操作。



--E


.设置数据库允许直接操作系统表。此操作可以在


SQL Server Enterprise Manager


里面选


择数据库服务器,按右


--


键,选择“属性”


,在“服务器设置”页面中将“允许对系统目录


直接修改”一项 选中。也可以使用如下语句来实现。



use master


go


sp_configure 'allow updates',1


go



reconfigure with override


go


--F


.设置


test


为紧急修复模式



--


在查询管理器里设置如下命令:



update sysdatabases set status=-32768 where dbid=DB_ID('test')


--


此时可以在


SQL Server Enterprise Manager


里面看到该数据库处于


“只读


/


置疑


/


脱机


/


紧急模


式”可以看到数据库里 面的表,但是仅仅有系统表



--G


. 下面执行真正的恢复操作,重建数据库日志文件



dbcc rebuild_log('test','C:/Program Files/Microsoft SQL Server/MSSQL/Data/test_')


/*


执行过程中,如果遇到下列提示信息:



服务器


:


消息



5030


,级别



16


,状态



1


,行



1


未能排它地锁定数据库以执行该操作。



DBCC


执行完毕。如果



DBCC


输出了错误信息,请与系统管理员联系。


说明您的其他程序正在使用该数据库,如果刚才您在


F


步骤 中使用


SQL


Server


Enterprise


Manager


打开了


test


库的系统表,那么退出


SQL Server Enterprise Manager


就可以了。



正确执行完成的提示应该类似于:



警告


:


数据库



'test'


的日志已重建。


已失去事务的一致性。


应运行



DBCC CHECKDB


以验证物


理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。


DBCC


执行完毕。如果



DBCC


输出了错误信息,请与系统管理员联系。



此时打开在


SQL Server Enterprise M anager


里面会看到数据库的状态为


“只供


DBO


使用”



< p>
时可以访问数据库里面的用户表了。



*/


--H


.验证数据库一致性(可省略)



dbcc checkdb('test')


/*


一般执行结果如下:



CHECKDB


发现了



0


个分配错误和



0


个一致性错误(在数据库



'test'


中)




DBCC


执行完毕。如果



DBCC


输出了错误信息,请与系统管理员联系。


*/


--I


.设置数据库为正常状态



sp_dboption 'test','dbo use only','false'


--


如果没有出错,那么恭喜, 现在就可以正常的使用恢复后的数据库啦。



--J

< p>
.最后一步,我们要将步骤


E


中设置的“允许对系 统目录直接修改”一项恢复。因为平时


直接操作系统表是一件比较危险的事情。当然,我 们可以在


SQL


Server


Enterprise


Manager


里面恢复,也可以使用如下语句完成



sp_configure 'allow updates',0


go



reconfigure with override


go




--


日志文件出现问题(丢失或文件 格式非法)


,怎么使数据库恢复正常






--


如< /p>




sp_attach_single _file


'TEST','C:/Program


Files/Microsoft


SQL

< br>Server/MSSQL/Data/test_'


失败则需要用下列步骤完成






--1.


将置疑的数据库分离,将


mdf< /p>


文件移走或改名!






sp_detach_db 'TEST'





--2.


重新在原来目录下建立同名的数据库


TEST





--3.


停掉


SQL Service ,


将先前的


mdf


文件拷贝回来覆盖< /p>


(


或改名


),


删 除原来的


log


文件


(


或改名


)





--4.


启动


SQL Service(


否则下面的语句没办法运行


)





--5 .


将数据库设成紧急模式


(status=32768)





sp_configure 'allow updates',1





reconfigure with override





update sysdatabases set status=32768 where name='TEST'





--


重新建立日志文件






DBCC traceon(3604)





dbcc rebuild_log('test','C:/Program Files/Microsoft SQL Server/MSSQL/Data/test_')





Go





--6.


重新启动


SQL Service





--7.


将数据库设置成单用户模式


(


下面三个语句均可


)





--sp_dboption 'TEST','single user','true'





update sysdatabases set status=4096 where name='TEST'





--alter database TEST set Single_user










--8.


检查数据库的完整性和一致性


,O K


了就可以用了






DBCC CheckDB(TEST)










--9.


将数据的访问权限设置成多 用户模式






sp_dboption 'TEST','single user','false'





--



alter database TEST set multi_user










--10.


关闭高级选项






sp_configure 'allow updates',0





reconfigure with override






--


结束














SQL Server


安装挂起




在安装


sql


server


时出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运


行安装程序之前必须重新启动计算机”错误。无法进行下去。



参考有关资料后


,


以下步骤基


本可以解 决:





1


)添加


/


删除程序中彻底删除


sql server






2


)将没有删除的


sql server


目录也删除掉。





3



打开注 册表编辑器,



HKEY_LOCAL_MACHINE/SY STEM/CurrentControlSet/Control/ Session


Manager


中找到


PendingFileRename Operations


项目,


并删除它。


这样就可以清除安装暂挂项


目。





4


)删除注册表中跟


sql server


相关的键





注意:



要 是不想重新启动就顺利安装,一般来说按照第三步就可以解决??










资料三:








--SQL SERVER


数据库置疑后恢复步骤






--1




恢复步骤:






--a.



smlog_


文件备份到其它目录下;






- -b.


将源目录下的


smlog_


文件 改名为


smlog_log_







--c .


执行以下语句修改数据库的状态:






use Master





go





update sysdatabases set status=32768 where name='


数据库名称


'






--


修改状态


,


設 為緊急狀





go





shutdown with nowait






--


停止数据库服务器






go





--d .


退出


SQL


并在

(COMMAND)


命令行模式中通过下面的代码重新启动


SQL







sqlservr -c -T3608 -T4022






--


安全模式启动


SQL SERVER


--e.


在查询分析器中执行以下语句来查看刚 刚修改过状态的数据库状态:






select Name,Status from sysdatabases where Name='


数据库名稱


'




--f.


执行以下代码新建日志文件:






dbcc traceon(3604)--


跟踪






dbcc rebuild_log('


数据库名称

< p>
','


日志文件全路徑


') --


文件名要有全路径和扩展名



--dbcc rebuild_log('prs_msc','dmscsqlmssqldataprs_msc_


--g.


将数据库置回正常状态:






update sysdatabases set status=0 where name='


数据库名称


'





--h.


重新启动数据库后执行以下语句检查数据库:






DBCC CHECKDB --


如果执行完有错误用以下语句修复






--i .


要修复数据库必需将数据库改为单用户模式:






Exce sp_dboption '


数据库名称


','single user','true' ---('false'


恢复多用户


)





--j.


执行以下语句修复数据库:






DBCC CHECKDB('


数据库名称

',REPAIR_ALLOW_DATA_LOSS)





REPAIR_ALLOW_DA TA_LOSS


:是比较高级的修复方式






REP AIR_FAST


:是简单快速的修复方式




處理状态就为置疑的數據庫



备份数据文件


,


然后按下面的步骤处理





< p>
1.


新建一个同名的数据库


(

数据文件与原来的要一致


)




-


-


-


-


-


-


-


-



本文更新与2021-02-24 14:42,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/670237.html

质疑的数据库的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文