如何恢复金蝶没有备份的账套?

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 如何恢复金蝶没有备份的账套?

01 引言

最近我老婆在运行金蝶软件时,发现打不开了,软件修复了也没用。最重要的是没有备份账套文件!!!

可能是操作系统更新的原因,或许是其它的问题,没办法了,于是只能在新的一台电脑重新安装金蝶的软件,那么问题来了,旧电脑的账套文件如何恢复呢?

我研究了一番,大致了解了金蝶的运行流程,于是就有了本文,旨在解决“在没有备份金蝶账套的情况下,如何恢复账套?”。

02 金蝶是如何备份的?

金蝶的备份分为手动备份自动备份,我画了一张简单的流程图:

一般很容易忘记手动备份,或者自动备份需要等待一段周期(7天)才会备份一次,如果系统出了问题,或者没有手动备份的习惯,这是很容易导致数据丢失的。

上述的图片,表明金蝶在备份是分为如下两个文件:

  1. bak:即是备份账套的完整数据库的内容(包括表结构、表数据等);
  2. dbb:这个文件应该主要是辅助金蝶导入的一些元数据,即这个文件必须存在,才可以使用金蝶去恢复导入。

我们的想法肯定是生成之后,然后拷贝到新的电脑,直接使用新的金蝶导入账套的,但是旧电脑的金蝶软件打不开了,所以是无法备份的了。那么问题来了,这两个文件都没有,如何生成呢?。

03 导出数据库账套文件?

其实金蝶安装时,是直接顺便安装了SQLServer数据库的,新建账套时,会在SQL Server新建对应的一个数据库名与账套名一样的数据库。比如:新建了账套“XX20231013”,那么在SQLServer数据库也会新建一个数据库名为XX20231013的数据库。

所以,可以理解为账套的所有数据都存在对应数据库名的数据库里面,因此,导出该数据库,就意味着把账套的所有内容导出了,导出之后的格式跟金蝶备份到磁盘的格式一样,即:bak结尾的文件

导出命令如下(在安装金蝶的机器,打开搜索cmd,打开执行以下命令即可):

sqlcmd -S [SQL Server 实例] -Q "BACKUP DATABASE 数据库名 TO DISK='D:\数据库名.bak' WITH FORMAT"

举例(表示:将名为 “XX20231013” 的数据库备份到 “D:\XX20231013.bak” 文件中,其中 SQL Server 实例名称为 “LAPTOP-GF57IB6L\SQLEXPRESS”,这个不懂的可以请教博主如何查看):

sqlcmd -S LAPTOP-GF57IB6L\SQLEXPRESS -Q "BACKUP DATABASE XX20231013 TO DISK='D:\XX20231013.bak' WITH FORMAT"

那么bak的文件是导出来了,但是dbb文件呢?这个文件是金蝶程序生成的,我们可以不用管它,直接绕过它的“门面”,直捣黄龙😁,下面来讲讲。

04 新建一套完全一样的账套

接着在新的电脑,我们可以按照以前的步骤,在金蝶新建一套与之前一模一样的账套,忘记截图了,所以这里没图(注意的是:账套名必须与待备份的账套名一样,对应的是数据库的名称)。

新建完成之后,就相当于现在已经有了以前的账套了,只是没数据而已。

05 新账套导入数据

这些数据就是存储前面步骤导出的bak文件里面(例子中的XX20231013.bak文件),我们把它拷贝到新的电脑,以准备恢复这些数据。

恢复数据之前,需要下载SSMS连接工具(也就是连接SQL Server的客户端),下载地址(免费的):https://download.microsoft.com/download/a/c/a/aca4e29f-6925-4d50-a06b-5576c6ea629f/SSMS-Setup-CHS.exe

安装完成之后,打开并进行依次如下操作:

  1. 右键单击目标数据(比如例子中的:XX20231013);
  2. 选择 “任务” > “还原”;
  3. 在 “还原数据库” 对话框中,选择 “设备”,然后单击 “…” 按钮;
  4. 在 “选择备份设备” 对话框中,单击 “添加” 按钮,然后选择你的 .bak 文件(如前面例子的:XX20231013.bak文件);
  5. 然后单击 “确定” 来开始还原操作。

注意:如果上面的还原操作失败,提示“数据库正在使用,所以无法获得对数据库独占访问权”,说明金蝶的客户端占用了该数据库的连接,需要把这些连接杀掉,然后再次执行上述步骤。可以直接在ssms里查询哪些进程占用了该数据库,然后kill掉,相关命令如下:

USE master;
-- 查询哪些进程占用了该数据库的连接,并查出spid
EXEC sp_who;
-- 根据spid 杀掉该进程
KILL spid;

上述步骤都没问题之后, 重启电脑,打开金蝶,进入账套查看,会发现之前账套的记录全部恢复了。

06 文末

很高兴自己能在短时间内给老婆解决了金蝶账套恢复的问题,主要是金蝶的教程太少了,而且很多的都是吐槽软件的问题。其实静下心来,利用自己的已有的专业知识,会发现这些问题也不是很难解决的,只要愿意去思考与尝试。

希望本文能帮助到遇到相同问题的人,欢迎关注,谢谢大家的阅读,本文完!

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
6月前
|
Oracle 关系型数据库
SAP小磁带备份注意事项
SAP小磁带备份注意事项
38 0
|
SQL 存储 数据库
如何恢复金蝶没有备份的账套?
如何恢复金蝶没有备份的账套?
288 0
|
弹性计算 容灾 关系型数据库
一文教你学会数据库异地备份
数据库备份DBS提供数据库异地备份能力,满足PolarDB、RDS、ECS上自建库异地容灾需求。本文介绍ECS上自建数据库的异地备份。
1421 0
|
数据库 数据库管理 Go
|
存储 Windows 语音技术
|
存储 数据安全/隐私保护
下一篇
无影云桌面