首页 T+ 系统管理 T+单MDF文件如何恢复

T+单MDF文件如何恢复




单个 MDF 文件如何恢复账套


问题现象

物理备份数据时,可能只备份到 MDF 文件,或者有时候硬盘损坏只保留到 MDF 文件的情况下如何恢复数据?

问题分析

单个 MDF 文件,首先我们要保证 MDF 文件无损坏,如果表页有损坏需要使用工具进行检查修复, 如果工具修复不了可以尝试语句进行修复,如果语句修复不了,那么只能由专业的数据恢复公司找回数据。

解决方案

下面我们以 T+软件为例,讲解单个 MDF 文件数据恢复的方法

1、假设某账套备份的文件名为:UFTData888250_000003.mdf



2、首先我们需要在 T+软件中建立一个账套(建议:如果能够知道之前账套启用的模块,会计期间, 启用日期那么请按之前的信息建立好账套,如果不记得了,先尝试恢复数据,再看看软件操作过程中是否有错误再进行解决。),本例中,我们建立了一个 008 账套,如下图所示:



3、我们需要进数据库查看 008 账套对应的物理文件名称,点击“开始”-“所有程序”-“Microsoft SQL Server 2008 R2”-“SQL Server Management Studio”- 服务器名称选择“(local)”,身份验证选择“windows 身份验证”,点击“连接”按钮,进入 SQL2008R2 数据库企业管理器,如下图所示:




4、点击“新建查询”,输入如下 SQL 语句:




select cAcc_Name as 账套名称,DsName as 数据库名称 from UFTSystem..EAP_Account

如下图所示,查到 008 账套的数据库名称为:UFTData55174_000008




5、展开 SQL2008R2 数据库企业管理器左侧数据库前面的+号,找到 UFTData55174_000008,右击并选择“属性”,查看 MDF 和 LDF 文件所在的路,如下图所示,可知物理文件存放在 C:\Program Files (x86)\Chanjet\TPlus11510\DBServer\data 下,



6、打开 C:\Program Files (x86)\Chanjet\TPlus11510\DBServer\data,查看物理文件是否确实存在,如下图所示:



7、将之前备份的 UFTData888250_000003.mdf 更名为: UFTData55174_000008.mdf


8、点击“开始”-“运行”输入 “net stop mssqlserver”停止数据库服务,(注意:如果安装的数据库实例名称不是 mssqlserver,请将 mssqlserver 改成自己的数据库实例名称)



9、将更名后的 UFTData55174_000008.mdf 拷贝到之前新建 008 账套的路径 C:\Program Files (x86)\Chanjet\TPlus11510\DBServer\data,并替换原文件,如下图所示:


10、替换完成后,点击“开始”-“运行”输入 “net start mssqlserver”启动数据库服务,(注意:如果安装的数据库实例名称不是 mssqlserver,请将 mssqlserver 改成自己的数据库实例名称)




11、此时登录 T+软件,会发现输入用户名密码后找不到对应的账套,进入 SQL 2008 R2 企业管理器,点击 UFTData55174_000008 时, 提示“ 无法访问数据库 UFTData55174_000008 。

(objectExplorer)”如下图所示:



12、出现上述错误的原因是由于我们新建账套的 LDF 文件,并不是恢复的账套对应的 LDF 文件,所以我们需要使用语句重建 LDF 文件。

--请注意将红色字体部分替换成你自己的账套数据库名称!

use master

go

alter database UFTData55174_000008 set emergency

go

alter database UFTData55174_000008 set single_user with rollback immediate

go

alter database UFTData55174_000008 Rebuild Log on

(name=SuspectDB_log,filename='D:/Log/UFTData55174_000008.LDF') go

alter database UFTData55174_000008 set multi_user

go





注意查看数据库给出的提示,如下表示重建LDF文件成功了! 消息5105,级别16,状态2,第1 行

出现文件激活错误。物理文件名'D:/Log/UFTData55174_000008.LDF' 可能不正确。请诊断并更正其他错误,然后重试此操作。




警告: 数据库'UFTData55174_000008' 的日志已重新生成。已失去事务的一致性。RESTORE 链已断开,服务器不再有以前的日志文件的上下文,因此您需要了解它们的内容。应运行DBCC CHECKDB 验证物理一致性。数据库已置于dbo-only 模式。在准备使数据库可用时,需要重置数据库选项,并删除所有多余的日志文件。


13、右击 SQL 2008 R2 企业管理器左侧的数据库,选择“刷新”刷新一下数据库状态,并点开UFTData55174_000008 前面的+号,看能否正常打开。(注:在 MDF 文件无损坏的情况,按上述操作后如果正常打开,表示重建 LDF 文件成功,修复完成,如果不能正常打开,可能是操作有误, 请参照前面的步骤重新操作。)



14、注意 ,照上述方法修复后 ,008 账套的MDF文件在C:\Program Files (x86)\Chanjet\TPlus11510\DBServer\data,而 LDF 文件却在 D:\log\下,如下图所示(为了后续数据安全起见,我们需要将 MDF 和 LDF 文件放在一块):


15、在 SQL 2008 R2 企业管理器中,右击 UFTData55174_000008 选择“任务”,选择“分离”,勾上“删除链接”点击“确定”按钮,如下图所示:




16、分离成功后将 D:\log 下的 UFTData55174_000008.LDF 文件拷贝到C:\Program Files (x86)\Chanjet\TPlus11510\DBServer\data 下,如下图所示:



17、在 SQL 2008 R2 企业管理器中,左侧右击数据库,选择“附加”如下图所示



18、在附加数据库窗口中选择 “ 添 加 ” 按钮,选择 C:\Program Files (x86)\Chanjet\TPlus11510\DBServer\data\ UFTData55174_000008,点击“确定”后,检查一下附加的数据库名称,及附加的 MDF 和 LDF 文件是否正确,确定准确无误后,点击确定,执行附加数据库操作,如下图所示:





19、附加成功后用原来备份的账套的用户名和密码登录软件,登录正常。



知识拓展


1、上述操作过程中,建议附加后戒者在第 12 步操作的时候使用 dbcc checkdb 来检测数据库是否损坏,操作步骤如下:在SQL 2008 R2 企业管理器中执行dbcc checkdb(UFTData55174_000008), 执行完后,拉到结果的最底部查看是否是发现 0 个分配错误和 0 个一致性错误。如下图所示:



2、如果此时出现了分配错误和一致性错误,请使用下面的语句进行修复。

sp_dboption 'UFTData55174_000008','single user','true'

go

dbcc checkdb ('UFTData55174_000008',repair_allow_data_loss)

go

dbcc checkdb ('UFTData55174_000008',repair_rebuild)

go

sp_dboption 'UFTData55174_000008', 'single user', 'false'

go

如下图所示:




3、单个 MDF 文件,如果是磁盘损坏的情况下恢复过来的,一定要先检测一下 MDF 文件是否有损坏,可以从百度下载工具进行检测。一般的工具都带有检测修复的功能。修复后再按上述情况进行操作。

4、T+软件恢复后,登录软件,有可能提示:记录已删除,不允许操作!如下图所示,此问题可能的原因是由于新建的账套的启用期间和原账套不一致,比如原账套是 9 月启用,新建的账套 1 月启用,

出现这个提示的时候,重新启动一下 IIS 服务就可以了,操作办法,点击“开始”“- 运行”输入“IISRESET”。

作者:畅捷服务社区 |  时间:2018年02月27日 13:45


对我有用 对我有用
没有帮助 没有帮助