sql server打开sql文件(sql server中打开)

sql server打开sql文件(sql server中打开)p 用达思 SQL 数据库修复软件怎么修复中了后缀 的勒索病毒加密的数据库 一卡通综合管理平台 p 2 33GB 的 sql 数据库被后缀 加密 nbsp nbsp 最近几天有一个一卡通综合管理平台的数据库被勒索病毒加密了

大家好,我是讯享网,很高兴认识大家。



 <p>用达思SQL数据库修复软件怎么修复中了后缀.[]的勒索病毒加密的数据库?(一卡通综合管理平台)</p> 

讯享网

111.png
讯享网

2.33GB的sql数据库被后缀.[]加密

&nbsp; &nbsp; 最近几天有一个一卡通综合管理平台的数据库被勒索病毒加密了,因为整个服务器只有sql数据库是重要的,而且客户拒绝向勒索病毒的黑客缴纳赎金,客户联系达思科技,希望达思科技能够帮助修复数据库。

&nbsp; &nbsp; 由于中了勒索病毒的客户越来越多,达思科技数据库修复团队也希望用这个案例,把整个勒索病毒加密的sql数据库修复的过程展示出来,以便帮助更多的受到勒索病毒威胁的公司降低随时。

一、SQL数据库修复前的准备工作

1.1 环境准备:

1、操作系统:推荐使用windows server2016或2019

2、SQL数据库环境:从2000开始安装(如何安装,网上有相应的教程),按照版本依次安装,可以安装SQL Server2000、2005、2008、2008R2、2012、2014、2016、2017、2019等;

3、硬盘:修SQL数据库对硬盘读写要求较高,推荐使用m.2接口(NVMe协议)的SSD固态硬盘。

&nbsp; &nbsp; &nbsp; 内存:建议64GB以上

1.2判断SQL Server数据库的版本?

&nbsp; &nbsp; 如果客户可以准确提供SQL数据库版本,就不需要自己检测版本了,如果客户不确定,我们也可以自己判断,用winhex打开sql数据库的mdf文件,跳转到第144扇区,看看00012060X4和00012060X5两个字节,看看16BIT对应的数值,就可以准确判断SQL数据库的版本,准确判断SQL版本来确定我们修复数据库时需要选择的输出环境的版本。

请看下图,本案例库数值是661,说明版本是SQL SERVER 2008R2

&nbsp;1.png

图一:判断数据库版本

不同SQL数据库版本对应的内部数据库版本数字如下:

讯享网<tbody> <tr> <td valign="middle" width="492" align="center">SQL Server数据库版本</td> <td valign="middle" width="358" align="center">对应的内部数据库版本(数字)</td> </tr> <tr> <td valign="middle" width="492" align="center">SQL Server 2017</td> <td valign="middle" width="358" align="center">869</td> </tr> <tr> <td valign="middle" width="492" align="center">SQL Server 2016</td> <td valign="middle" width="358" align="center">852</td> </tr> <tr> <td valign="middle" width="492" align="center">SQL Server 2014</td> <td valign="middle" width="358" align="center">782</td> </tr> <tr> <td valign="middle" width="492" align="center">SQL Server 2012</td> <td valign="middle" width="358" align="center">706</td> </tr> <tr> <td valign="middle" width="492" align="center">SQL Server2012 CTP1</td> <td valign="middle" width="358" align="center">684</td> </tr> <tr> <td valign="middle" width="492" align="center">SQL Server 2008 R2</td> <td valign="middle" width="358" align="center">665</td> </tr> <tr> <td valign="middle" width="492" align="center">SQL Server 2008</td> <td valign="middle" width="358" align="center">661</td> </tr> <tr> <td valign="middle" width="492" align="center">SQL Server 2005 with vardecimal enabled</td> <td valign="middle" width="358" align="center">612</td> </tr> <tr> <td valign="middle" width="492" align="center">SQL Server 2005</td> <td valign="middle" width="358" align="center">611</td> </tr> <tr> <td valign="middle" width="492" align="center">SQL Server 2000</td> <td valign="middle" width="358" align="center">539</td> </tr> <tr> <td valign="middle" width="492" align="center">SQL Server 7.0</td> <td valign="middle" width="358" align="center">515</td> </tr> </tbody> 

注意:如果前512扇区或2048或4096扇区被病毒破坏,就需要客户提供具体的数据库版本了。&nbsp;

1.3检测SQL数据库文件,判断修复成功率

1、下载最新版本的达思sql数据库修复软件

无需安装直接运行!打开达思SQL数据库修复软件,点击&ldquo;检查文件&rdquo;,测试数据库损坏程度。

&nbsp;2.png

图二:检测数据库文件的损坏率

打开检测文件对话框后,点击&ldquo;选择文件&rdquo;选取相应目录后再点击&ldquo;开始检测&rdquo;。

&nbsp;3.png

图三:检测数据库文件的损坏率

扫描结束后,重点看一下错误页和空页的数量和比例,如果空页和坏页比例小于5%以下,则数据库修复成功率更高。

4.png&nbsp;

图四:检测数据库文件的损坏率

请看图,本案例的空页为4720,占比为1.5%,错误页(损坏的页)为142,占比几乎为零,因此可以判断,数据库修复的成功率很高!

二、SQL数据库修复过程

1、关于参考库(为什么需要参考库?):

由于SQL数据库的损坏的不确定性,很有可能系统表结构、存储过程等重要参数受损的情况下,我们如果有同结构的好的老备份,达思软件可以把好的表结构提取出来,再把数据库填进去。

2、关于内置的表结构(达思软件打开数据库文件时对话框可选):

达思软件内置了金蝶、用友、管家婆、浪潮、思迅等品牌的数十个版本的表结构,在没有同结构的参考库的情况下,可以选择内置表结构作为参考库,以提高数据库修复的准确率和成功率。

3、达思软件修复SQL数据库的过程

在达思软件界面中选择&ldquo;打开文件&rdquo;,选择需要修复的损坏的sql数据库以及和坏库同结构的好数据库作为参照库,开始修复损坏的SQL数据库。

&nbsp;5.png

图五:打开需要修复的数据库文件

&nbsp;6.png

图六:打开需要修复的数据库文件

选择好需要修复的损坏的SQL数据库文件后,再选择事先准备好的相同表结构的好库做参照。

&nbsp;7.png

图七:数据库修复的必要选项

如果客户可以提供老的备份作为参考,就优先选择老的备份作为参考。

如果客户无法提供老的备份作为参考,则可以选择达思软件内置的版本作为参考。

如果达思软件内置也没有,这可以在客户的数据库环境下新建同结构的空库作为参考。

因此,参考库的优先级为:同一个数据库的好的老备份&gt;同结构的的好库&gt;达思软件内置的相同版本&gt;相同环境下新建的表结构一样的空库

&nbsp;8.png

图八:自动解析数据库文件

选择完成后,点击&ldquo;开始恢复&rdquo;!

达思软件将会自动修复,根据不同大小以及损坏程度的不同,一般在几分钟内就可以完成展开。

SQL数据库展开后,就可以在达思软件界面中查看数据库的修复结果和数据。如下图:左侧红框中显示的是所有表,右侧蓝框中是修复后的数据库文件的解析结果报告。

&nbsp;9.png

图九:数据库文件解析结果报告

从左侧栏中双击某个表,可以在右侧看到修复后该表里的数据,这个时候可以检查一下重要的表数据是否正确。

&nbsp;10.png

图十:核对表数据是否正确

打开SQL Server2008R2,登陆SQL SERVER,附加好的参照库(提前复制出一份),然后,清空参考库里面的表数据作为接收库。

&nbsp;11.png

图十一:在sql server里打开参考数据库

&nbsp;12.png

图十二:附加好的参考库(清空表数据作为接收库)

&nbsp;13.png

图十三:附加好的参考库(清空表数据作为接收库)

&nbsp;14.png

图十四:附加好的参考库(清空表数据作为接收库)

附加完成后,右键选择该库,选择&ldquo;新建查询&rdquo;输入指令完成清除表数据

&nbsp;15.png

图十五:新建查询(清空表数据作为接收库)

清空表数据:

清空表数据,保留视图,存储过程,函数,以及保留表约束、触发器等等,可以给故障数据库预留一个好的躯壳,把坏库数据导入此躯壳。对用友、金蝶等数据库恢复有时候能达到好的效果。

清除表数据有两种方法:

一种用delete from [表名] ,这种方法对于大数据库,速度慢,会产生很大的日志信息,对于小库,速度可以忽略;

另一种是truncate table &nbsp;[表名] ,这种方法速度快,但清除不了具有外键的表数据。&nbsp;

在清除表数据时,可以采用两种方法结合。&nbsp;

清除表数据时先禁用一切约束,清除完成以后再次启用约束就行了。&nbsp;

1、 采用truncate table &nbsp;[表名] 清除表数据,排除具有外键属性的表,清除语句获取如下:

Use [要操作的库名字]

———————————————————————–

select

&nbsp; &nbsp;‘alter table &nbsp;[’ +name+ ‘] nocheck constraint all; alter table &nbsp;[’ +name + ‘] disable trigger all;

truncate table [’+name+‘];’

&nbsp;+ ‘ alter table &nbsp;[’ +name + ‘] enable trigger all; alter table &nbsp;[’ +name + ‘] check constraint all;

&nbsp;go’

&nbsp;from sysobjects where id not in(select &nbsp; parent_object_id from sys.foreign_keys ) and id not in(select &nbsp; referenced_object_id from sys.foreign_keys ) and &nbsp;type=‘U’

———————————————————————–

&nbsp;上述SQL语句得到的结果,再次在SQL查询分析器里运行。&nbsp;

2、用 delete from [表名] 清除表数据语句获取如下

Use [要操作的库名字]

———————————————————————–

SELECT ‘alter table &nbsp;[’ +object_name (id) + ‘] nocheck constraint all; alter table &nbsp;[’ +object_name (id) + ‘] disable trigger all;

&nbsp;delete from [’+object_name (id)+‘];’ + ‘

&nbsp;alter table &nbsp;[’ +object_name (id) + ‘] enable trigger all; alter table &nbsp;[’ +object_name (id) + ‘] check constraint all;

go’

TableName from sysobjects where &nbsp; type=‘U’

———————————————————————–

3、 有些MS SQL Server查询分析器,对于 上述语句后面的 go ,copy出来后不自动换行,可以把运行结果保存到文本文件中,查询分析器打开以后,会自动换行。如果不自动换行,sql语句执行报错。

4、 可能遇到清除不了的某些表,查看它和哪些表关联外键,先把两个表的约束同时禁用,再用delete from [表名],完了以后,两个表同时恢复约束使用。

5、 查看清除数据是否成功彻底,用下述语句查看记录数量:

Use [要操作的库名字]

———————————————————————–

SELECT object_name (i.id) TableName,

&nbsp; &nbsp;rows as RowCnt

FROM sysindexes i

INNER JOIN sysObjects o

ON (o.id = i.id AND o.xType = ‘U ‘)

WHERE indid &lt; 2 and RowCnt&gt;0

ORDER BY RowCnt desc

&nbsp;16.png

图十六:清空参考库的表数据

再从下面蓝框中,单机&ldquo;TableName&rdquo;,选择所有表后,右键单击复制

&nbsp;17.png

图十七:清空参考库的表数据作为接收库

复制完后,在上面指令栏中粘贴所有复制内容

&nbsp;18.png

图十八:清空参考库的表数据作为接收库

将光标点到最开始的位置,然后选择执行

&nbsp;19.png

图十九:清空参考库的表数据作为接收库

等待指令执行完毕后,再用最上面的查询指令查询一下结果,一般执行2-3遍后,所有表数据都会被清空(个别清除不了的情况需要逐条去清除数据)

&nbsp;20.png

图二十:清空参考库的表数据作为接收库

&nbsp;21.png

图二十一:清空参考库的表数据作为接收库

表数据清空后,用软件把数据导入到目标库里,在软件界面选择&ldquo;导出数据&rdquo;

&nbsp;22.png

图二十二:导出数据库

弹出连接设置界面,服务器名默认为:127.0.0.1(若该机器SQL SERVER版本有很多,后面需要加上&ldquo;SQL版本号&rdquo;,如127.0.0.1SQL2000或127.0.0.1SQL2008R2来指定输出环境),

数据库名则输入清除完表数据的目标库名称。

&nbsp;23.png

图二十三:数据库连接设置

点击确定,继续弹出选择界面,一般情况选择全部数据类型即可,数据开始导出

&nbsp;24.png

图二十四:导出数据库

导出过程中,先生成所有表,目标库中这些表已经存在

&nbsp;25.png

图二十五:自动创建表,导出数据库

创建完所有表后,开始自动导出数据。

&nbsp;26.png

图二十六:导出数据库

导出的时间根表的数量以及数据库大小有关,为了提升导出的效率,推荐您使用高速的SSD固态硬盘以及大容量内存。

导出完成后,会生成导出结果报告

&nbsp;27.png

图二十七:导出数据库完成后生成结果报告

自此,数据库修复导出完成

最后,我们来验证一下修复的数据库是否完整?经过验证,这个客户的一卡通综合管理系统完美恢复成功!

&nbsp;28.png

图二十八:在一卡通综合管理平台的应用系统里验证修复后的数据库是否成功

数据库修复完成后,会自动生成MDF文件和LDF文件,把数据库导入到应用中既可以完成验证工作。


小讯
上一篇 2025-05-27 09:07
下一篇 2025-06-14 14:37

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/180250.html