几个月前,我在一台客户机上安装了 SQL Server 2005。我给了他一个备份选项,让他及时备份,但他从来没有备份过。
今天他打电话给我说“我看不到我的任何记录。”我访问了我的客户系统,发现表格中没有任何记录。任何表格中甚至连一行都没有。然后我检查他是否有任何备份文件,但我发现备份文件不见了。
我问他原因可能是什么,他说可能是病毒引起的。
在此之后,我检查了 mdf 和 ldf 文件的大小并发现它应该是这样的。当我创建他的服务器 mdf ldf 文件时有 2MB 的数据库,现在它分别是 83 MB 和 193Mb mdf/ldf。
这表明数据仍然存在但尚未显示。
可能的原因是什么以及如何将所有数据恢复回我的表?
答案1
不能根据文件大小来判断。如果他DELETE * FROM table
在每个表上运行,那么数据库的大小将保持不变,直到他运行为止DBCC SHRINKDATABASE
。
我会复制文件,然后在编辑器中打开它,看看里面是否真的有内容。或者你可以尝试缩小它。如果它缩小到没有内容,它就是空的。(再次进行备份)。
在我看来,所有数据全部丢失似乎是用户问题。没有备份,没有数据,神秘病毒?可能是病毒,但也可能是用户错误。
答案2
由于数据库结构看似完好无损(您应该检查一下),最可能的原因是有人直接在数据库中捣乱,也许是为了绕过使用它的应用程序中的一些业务逻辑。病毒?极不可能。
现在数据似乎只存在于事务日志中。您可以使用类似Apex SQL审计或者Quest 的 Litespeed For SQL Server查看日志,看看发生了什么,可能恢复数据。