从 .bak 文件恢复数据

Recover Data from .bak File

我可以使用有关如何恢复非标准 SQL 服务器 .bak 备份文件的提示。

背景:我们有一个正常运行的发票程序,其中包含来自一家已停业提供商的超过 10 年的数据。在过去的通信中,提供商告诉我们该产品是在 SQL 服务器上构建的,但从未告诉我们是什么版本。

我们的目标是从程序中导出数据,重新格式化,然后将其加载到另一个会计系统中。该程序本身没有一套完整的导出工具,因此我们希望从它创建的 .bak 文件中访问数据,以获取所有数据以导入到新系统中。

我尝试了以下 SQL 服务器版本但没有成功:

我也试过用...恢复...

1> restore database newhouse from disk='/home/me/test.bak'
2> go
Msg 3241, Level 16, State 1, Server 8350, Line 1
The media family on device '/home/me/test.bak' is incorrectly formed. SQL Server cannot process this media family.
Msg 3013, Level 16, State 1, Server 8350, Line 1
RESTORE DATABASE is terminating abnormally.
1> restore verifyonly from disk='/home/me/test.bak'
2> go
Msg 3241, Level 16, State 1, Server 8350, Line 1
The media family on device '/home/me/test.bak' is incorrectly formed. SQL Server cannot process this media family.
Msg 3013, Level 16, State 1, Server 8350, Line 1
VERIFY DATABASE is terminating abnormally.
1> restore headeronly from disk='/home/me/test.bak' with nounload
2> go
Msg 3241, Level 16, State 1, Server 8350, Line 1
The media family on device '/home/me/test.bak' is incorrectly formed. SQL Server cannot process this media family.
Msg 3013, Level 16, State 1, Server 8350, Line 1
RESTORE HEADERONLY is terminating abnormally.
1> restore headeronly from disk='/home/me/test.bak' 
2> go
Msg 3241, Level 16, State 1, Server 8350, Line 1
The media family on device '/home/me/test.bak' is incorrectly formed. SQL Server cannot process this media family.
Msg 3013, Level 16, State 1, Server 8350, Line 1

一个 .bak 包含虚构数据的文件 is available here


更新#1 - 回复@DavidJamesSmith

这是我得到的...

1> restore headeronly 
2> from disk = N'/home/me/test.bak' 
3> go 
Msg 3241, Level 16, State 1, Server 8350, Line 1 
The media family on device '/home/me/test.bak' is incorrectly formed. SQL Server cannot process this media family. 
Msg 3013, Level 16, State 1, Server 8350, Line 1 
RESTORE HEADERONLY is terminating abnormally.

更新#2 - 再次回复@DavidJamesSmith

据我所知,文件是加密的。我可以使用 gHex(GNOME 中的十六进制编辑器)打开文件并读取数据。

关于文件损坏的问题,我不相信。无论 .bak 文件是在创建 .bak 的机器上还是在我将文件传输到的另一台机器上,我都会在该程序创建的任何 .bak 文件上遇到相同的错误。

如果文件已损坏,则程序本身正在导出损坏的版本。

这是我在具有帐户软件本身的机器上的新导出 运行 中得到的。

1> use newhouse
2> restore database newhouserecovery from
3> disk = N'C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Backup\test.bak'
4> with
5> file = 1,
6> move N'test' to N'C:\Users\me\Backup\test.mdf',
7> move N'test_log' to N'C:\Users\me\Backup\test_log.ldf',
8> nounload,
9> stats = 5
10> go
Changed database context to 'newhouse'.
Msg 3241, Level 16, State 1, Server DESKTO\SQLEXPRESS, Line 2
The media family on device 'C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Backup\test.bak' is incorrectly formed. SQL Server cannot process this media family.
Msg 3013, Level 16, State 1, Server DESKTO\SQLEXPRESS, Line 2
RESTORE DATABASE is terminating abnormally.

帐户软件使用的是 Microsoft SQL Server Compact 3.5 Service Pack 2。

感谢大家的帮助,尤其是@lptr 给我的提示,让我走上了正确的轨道。