修复SQL2000数据库置疑时出现的错误

修复SQL2000数据库置疑时出现的错误,第1张

备份数据文件,然后按下面的步骤处理: 1新建一个同名的数据库(数据文件与原来的要一致) 2再停掉sql server(注意不要分离数据库) 3用原数据库的数据文件覆盖掉这个新建的数据库 4再重启sql server 5此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名) 6完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用 数据库的脚本创建一个新的数据库,并将数据导进去就行了 USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 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 reconfigure with override Go sp_dboption '置疑的数据库名', 'single user', 'false 假设数据库为TEST: 按以下步骤执行 A.设置数据库允许直接 *** 作系统表。此 *** 作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。 use master go sp_configure 'allow updates',1 go reconfigure with override go B.设置test为紧急修复模式 update sysdatabases set status=-32768 where dbid=DB_ID('test') 此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表 C.下面执行真正的恢复 *** 作,重建数据库日志文件 dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_logldf') 执行过程中,如果遇到下列提示信息: 服务器: 消息 5030,级别 16,状态 1,行 1 未能排它地锁定数据库以执行该 *** 作。 DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。 正确执行完成的提示应该类似于: 警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。

以前没有备份吗?

没有的话看看这个,或许对你有用。。。

SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式。下面将主要讨论一下后者的备份与恢复。本文假定您能熟练使用SQL Server Enterprise Manager(SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器)

1、正常的备份、SQL数据库恢复方式

正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断开,或者停掉整个数据库服务器,然后复制文件。

卸下数据库的命令:Sp_detach_db 数据库名

连接数据库的命令:Sp_attach_db或者sp_attach_single_file_db

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

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

使用此方法可以正确恢复SQL Sever70和SQL Server 2000的数据库文件,要点是备份的时候一定要将mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。

例子:

假设数据库为test,其数据文件为test_datamdf,日志文件为test_logldf。下面我们讨论一下如何备份、恢复该数据库。

卸下数据库:sp_detach_db 'test'

连接数据库:sp_attach_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_datamdf','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_logldf'

sp_attach_single_file_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_datamdf'

2、只有mdf文件的恢复技术

由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。(此文章由飞客数据恢复中心搜集>

数据库置疑之后修复完,用 dbcc checkdb(数据库名) 检查数据的时候提示有一致性错误是设置错造成的,解决方法为:

1、使用 phpMyAdmin 自带的修复表,选中需要修复的表,然后点击修复表。

2、使用Navicat for MySQL修复打开数据库之后选择需要修复的表按右键 修复。

3、使用cmd修复,首先定位到数据库安装目录。

4、然后登录数据库。

5、然后repair table 需要修复的表就行了。

数据库926错误解决方案在做任何 *** 作前首先备份数据库的数据文件和日志文件!以及最新的备份文件!第一种解决方法:先删除报错数据库,再新建一同名数据库,然后暂停Service manager(及sql server 服务) ,删除库文件和日志文件再启动Service manager ,使用单数据文件恢复数据库命令恢复数据库。例:打开sql server/tools/sql server query analyzer 执行下面 *** 作 EXEC sp_attach_single_file_db @dbname = 'pubs', @physname = 'c:\mssql7\data\pubsmdf' 说明:‘pubs’为要恢复的数据库名称,‘c:\mssql7\data\pubsmdf’为要恢复的数据库的库文件的具体路径和文件名称。再重新启动一下service manager ,看能否正常打开处理后的数据库;如果不可以再使用第二种方案。第二种解决方法:打开sql server/tools/sql server query analyzer 执行下面 *** 作 USE MASTER GO sp_configure 'allow update',1 RECONFIGURE WITH OVERRIDE GO UPDATE sysdatabases set status = 32768 WHERE name = 'db_pos363' GO sp_configure 'allow update',0 RECONFIGURE WITH OVERRIDE GO 说明:'db_pos363'是要修复的数据库名称。执行完毕再重启一下Service manager打开数据库看是否处于紧急状态!再从另一装有sql 2000的机器上连接报错的数据库,然后再在sql 2000的机器上新建一数据库,再使用sql 2000自带的数据库导入导出功能(在新建的数据库上单击右键/所有任务/数据导入、数据导出)从报错数据库导入数据到新建的数据库中!在导入选项中注意以下几项: 1, 导入方式选择分‘从源数据库复制表和视图’以及‘从sql server数据库间复制对象和数据’。当选择从源数据库复制表和视图时一定要选择全部表! 2, 当选择‘从sql server数据库间复制对象和数据’时,在‘导入导出向导’对话框中去除‘使用默认选项’的选中标志;再在打开‘选项’对话框,去除以下三项的选中标志。A,复制数据用户和数据库角色;B,复制sql server 登陆;C,复制对象及权限。 3, 在使用‘从sql server数据库间复制对象和数据’时,有时会出现单张表导入失败,这时有时会在导入结束时提示那几张表导入失败有时不提示,如果提示,就再使用‘从源数据库复制表和视图’并选中导入失败的表重新导入一遍;如果不提示就只能在一张张表打开查看了,发现空表后再使用‘从源数据库复制表和视图’导入需要导入的表!导入成功后再删除sql server 70机器上处于紧急状态的数据库,再新建一个同名数据库,建好后再使用sql 2000的数据库导出功能导出到此数据库中,在导出过程中同样要注意导入时的注意事项!

找到质疑的数据库文件,重新附加回来就可以。数据库文件名一般格式为ufdata_001_2012这样的 001指帐套号,2012指对应年度数据,根据实际情况查找就可以。 数据文件格式个别小版本会不是这个样子。你可以参照其他没有质疑的数据库文件名称去查找。

先使用“无日志附加”的方法进行附加数据后,对数据库做DBCC检测,然后针对错误进行修复 。一般如果数据库正在进行读写 *** 作,突然断电,会导致数据库无法回写正常的数据,这样就会导致数据库索引及其它错误,常见的有“并闫锁页错误”、“表错误: 分配单元ID 169144,页(1:XXXX)。测试(IS_OFF (BUF_IOERR, pBUF->bstat))失败。”,可以先用DBCC先进行修复 ,命令:

DBCC CHECKDB(DBName,REPAIR_FAST) --不丢失数据

DBCC CHECKDB(DBName,REPAIR_REBUILD)--不丢失数据

DBCC CHECKDB(DBName,REPAIR_ALLOW_DATA_LOSS)--会丢失数据

如果还是修复不好,就找专业的数据恢复公司做修复吧,可以找北亚数据恢复修复 ,他们修复SQL数据库很厉害。。。

以上就是关于修复SQL2000数据库置疑时出现的错误全部的内容,包括:修复SQL2000数据库置疑时出现的错误、SQL数据库显示:置疑,我怎么能挽回数据、数据库置疑之后修复完,用 dbcc checkdb(数据库名) 检查数据的时候提示有一致性错误等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存