关键词不能为空

当前您在: 主页 > 英语 >

数据库823错误解决方法

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

-

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


标题:


[MySQL]MSSQL


数据库


823


错误解决方法



出处:



时间:


Sat, 12 Apr 2008 10:12:27 +0000


作者:


ah011


地址:


/?193



内容:



1.


日志文件被破坏


823


错误



----------------------


日志文件被 破坏的数据库文件,


通过如下方法附加上去后,


数据库里所有的 表都


不能访问,提示错误


832


,请问 要如何解决??



use master


go


sp_configure 'allow updates',1


go


reconfigure with override


go


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


go


dbcc rebuild_log('linyi_pljy','e:Program FilesMicrosoft SQL


ServerMSSQLDatalinyi_pljy_')


go


sp_dboption 'linyi_pljy','dbo use only','false'


go


sp_configure 'allow updates',0


go



reconfigure with override


go



---------------------


2.


附加数据库文件时


,


提示


823


错误



----------------------



1


)朋友单位有台电脑的数据库


ufdata_ 001_2008


状态为置疑,我断开再附加


时提示如下图所示 说明,附加时失败,错误


823



< /p>


原因分析:出现这种情况可能是由于电脑忽然断电或者异常关机造成的。

< br>


解决方法:在


SQL


企业管理 器中,新建同名数据库


ufdata_001_2008


,新建 库后


现有数据名称是


ufdata_001_

< br>和


ufdata_001_2008_




停止数据库,把损坏的数据库文件


< br>和



修改名称为


ufdata_0 01_



ufdata_001_2008_

< br>,并覆盖刚才新建数据库目


录下的数据,同时删除


ufd ata_001_2008_


文件;



启动数据库服务,发现数据库名


ufdata_001_2008


后面有“置疑”字样;



打开


SQL


自带查询分析器,执行如下


SQL


语句 :



use master


go


exec


sp_configure


'allow


updates',1


RECONFIGURE


WITH


OVERRIDE /*



开修改系统表的开关


*/


go


update


sysdatabases


set


status=32768


where


name='ufdata_001_2008'


/*



置数据库状态


*/


go


DBCC REBUILD_LOG ('ufdata_001_2008','E:') /*


重建


LDF


文件


*/


go


update sysdatabases set status=0 where name='ufdata_001_2008' /*


重置数据库状态


*/


go


restore database ufdata_001_2008 WITH RECOVERY /*


恢复数据库


*/


go


exec


sp_configure


'allow


updates',0


RECONFIGURE


WITH


OVERRIDE /*



闭打开修改系统表的开关


*/ < /p>


执行以上语句后,


ufdata_001_2008


没有了置疑状态,数据可以正常读取了





2



use master


go


EXEC sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE /*



开修改系统表的开关



*/



update sysdatabases set status = 32768 where name = '


数据库名


'



DBCC REBUILD_LOG ('


数据库名


', 'E: dzzdatabase dzz1204_' )



update sysdatabases set status = 0 where name = '


数据库名


'



restore database


数据库名



WITH RECOVERY



EXEC sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE /*



闭打开修改系统表的开关



*/



3


因 为停电等原因造成


MSSQL


数据库


,


提示


823


错误



----------------------


USE MASTER


GO


sp_dboption 'databaseName', 'single user', 'true'


Go


DBCC CHECKDB('databaseName', REPAIR_REBUILD)


Go


USE databaseName


go


exec sp_msforeachtable 'DBCC CHECKTABLE('''?''',REPAIR_REBUILD)'


go


sp_dboption 'databaseName', 'single user', 'false'


Go



如果还不行,可以采用允许丢失数据的方式修复,如下:



USE MASTER


GO


sp_dboption 'databaseName', 'single user', 'true'


Go


DBCC CHECKDB('databaseName', REPAIR_ALLOW_DATA_LOSS)


Go


USE databaseName


go


exec sp_msforeachtable 'DBCC CHECKTABLE('''?''',REPAIR_REBUILD)'


go


sp_dboption 'databaseName', 'single user', 'false'


Go



4.


数据库恢复资料



----------------------


SQL Server


数据库备份有两种方式,一种是使用


BACKUP DATABASE


将数据


库文件备份出去,

另外一种就是直接拷贝数据库文件


mdf


和日志文件


ldf


的方式。


下面将主要讨论一下后者的备 份与恢复。本文假定您能熟练使用


SQL Server


Enterprise Manager(SQL Server


企业管理器


)



SQL Server Quwey


Analyser(SQL Server


查询分析器


)


1


、正常的备份、恢复方式



正常方式下,


我们要备份一个数据库,


首先要先 将该数据库从运行的数据服务器


中断开,或者停掉整个数据库服务器,然后复制文件。< /p>



卸下数据库的命令:


Sp_detach_db


数据库名



连接数据库的命令:


Sp_attach_db


或者


sp_att ach_single_file_db


s_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′ [,...16]



sp_attach_single_file_db [@dbname =] ′dbname′, [@physname


=] ′physical_name′



使用此方法可以正确恢复


SQL Sever7.0



SQL Server 2000


的数据库文件,



点是备份的时候一定要将


mdf



ldf


两 个文件都备份下来,


mdf


文件是数据库数

据文件,


ldf


是数据库日志文件。



例子:



假设数据库为

< p>
test


,其数据文件为


test_


,日志文件为


test_


。下


面我们讨论一下如何备份、恢复该数据库。



卸下数据库:


sp_detach_db 'test'


连接数据库:


sp_attach_db 'test','C:Program FilesMicrosoft SQL


ServerMSSQLDatatest_','C:Program FilesMicrosoft SQL


ServerMSSQLDatatest_'


sp_attach_single_file_db 'test','C:Program FilesMicrosoft SQL


ServerMSSQLDatatest_'


2

< p>
、只有


mdf


文件的恢复技术


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


mdf


文件,那么恢复起来就是一件很


麻烦的事情了。



如果您的


mdf


文件是当前数据库产生 的,


那么很侥幸,


也许你使用


sp_a ttach_db


或者


sp_attach_single_f ile_db


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




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



'C:Program FilesMicrosoft SQL


ServerMSSQLdatatest_'


可能有误。



已创建名为



'C:Program FilesMicrosoft SQL


ServerMSSQLDatatest_'


的新日志文件。



但是,


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


那么很不幸,

< p>
也许上


述办法就行不通了。你也许会得到类似下面的错误信息



服务器


:


消息



1813


,级别



16


,状态



2


,行



1


未能打开新数据库



'test'



CREATE DATABASE


将终止。



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



'd:test_'


可能有误。



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


< p>
A



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


(



test)


可以在


SQL Server


Enterprise Manager


里面建立。



B


.停掉数据库服务器。


< p>
C


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


test_< /p>


删除,用要恢复的数据库


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 M anager


里面看到该数据库处于



只读



置疑



脱机



紧急模式



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



G


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



dbcc rebuild_log('test','C:Program FilesMicrosoft SQL


ServerMSSQLDatatest_')


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



服务器


:


消息



5030


,级别



16


,状态



1


,行



1


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



DBCC


执行完毕。


如果



DBCC


输出了错误信息,


请与系统 管理员联系。


[brown]


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


F


步骤中使用


SQ L Server


Enterprise Manager


打 开了


test


库的系统表,那么退出


S QL Server Enterprise


Manager


就可以了。



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



[brown]


警告


:


数据库



'test'


的日志已重建。


已失去事务的一致性。


应运行



DBCC


CHECKDB


以验证物理一致性。将必须重置数据库选项,并且可能需要删除多


余的日志文 件。



DBCC


执行完毕。如果



DBCC


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



此时打开在


SQL Server Enterprise M anager


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


只供


DBO


使用



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



H


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



dbcc checkdb('test')


一般执行结果如下:



CHECKDB


发现了



0


个分配错误和



0


个一致性错误(在数据库



'test'


中)。



DBCC


执行完毕。如果



DBCC


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



I


.设置数据库为正常状态



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


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



J


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


E


中设置的


< br>允许对系统目录直接修改



一项恢复。

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


当然,


我们可以在


SQL Server


Enterprise Manager


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



sp_configure 'allow updates',0


go



reconfigure with override


go



SQL Server


数据库文件恢复技术




SQL Server


数据库备份有两种方式,一种是使用


BACKUP DATABASE


将数据


库文件备份出去,另外一种就是



直接拷贝数据库文件


mdf


和日志文件


ldf


的方式。



下面将主要讨论一下后者的备份与恢复。本文假定您能熟练使用


SQL Server


Enterprise Manager


(SQL Server


企业管理器


)



SQL Server Quwey Analyser(SQL Server


查询分析



)


1


、正常的备份、恢复方式



正常方式下,


我们要备份一个数据库,


首先要先 将该数据库从运行的数据服务器


中断开,或者停掉整个数



据库服务器,然后复制文件。



卸下数据库的命令:


Sp_detach_db


数据库名



连接数据库的命令:


Sp_attach_db


或者


sp_att ach_single_file_db


s_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′ [,...16]



sp_attach_single_file_db [@dbname =] ′dbname′, [@physname


=] ′physical_name′



使用此方法可以正确恢复


SQL Sever7.0



SQL Server 2000


的数据库文件,



点是备份的时候一定要将



mdf



ldf


两个文件都备份下来,


mdf


文件是数 据库数据文件,


ldf


是数据库日志


文 件。



例子:



假设数据库为


test


,其数据文件为


test_


,日志文件为


test_




下面我们讨论一下如何备份、恢复该数据库。



卸下数据库:


sp_detach_db 'test'


连接数据库:


sp_attach_db 'test','C:Program FilesMicrosoft SQL


ServerMSSQLDatatest_','C:Program FilesMicrosoft SQL


ServerMSSQLDatatest_'


sp_attach_single_file_db 'test','C:Program FilesMicrosoft SQL


ServerMSSQLDatatest_'


2

< p>
、只有


mdf


文件的恢复技术


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


mdf


文件,那么恢复起来就是一件很


麻烦的事情了。



如果您的


mdf


文件是当前数据库产生 的,


那么很侥幸,


也许你使用


sp_a ttach_db


或者



sp_att ach_single_file_db


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



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



'C:Program FilesMicrosoft SQL


ServerMSSQLdatatest_'



可能有误。



已创建名为



'C:Program FilesMicrosoft SQL


ServerMSSQLDatatest_'


的新日志文件。



但是,


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


那么很不幸,

< p>
也许上


述办法就行不通了。



你也许会得到类似下面的错误信息



服务器


:


消息



1813


,级别



16


,状态



2


,行



1


未能打开新数据库



'test'



CREATE DATABASE


将终止。



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



'd:test_'


可能有误。



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


< p>
A



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


(



test)


可以在


SQL Server


Enterprise Manager


里面建立。



B


.停掉数据库服务器。


< p>
C


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


test_< /p>


删除,用要恢复的数据库


mdf


文件覆盖 刚才生成的数据



库数据文件


test _



-


-


-


-


-


-


-


-



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

数据库823错误解决方法的相关文章