从这个MS SQL bak文件获取数据

以下命令

restore filelistonly from disk = 'C:\....bak' restore verifyonly from disk = 'C:\....bak' 

产生这个错误

 The media family on device 'C:\...bak' is incorrectly formed. SQL Server cannot process this media family. 

这个命令

 restore headeronly from disk = 'C:\....bak' 

产生

 BackupName BackupDescription BackupType ExpirationDate Compressed Position DeviceType UserName ServerName DatabaseName DatabaseVersion DatabaseCreationDate BackupSize FirstLSN LastLSN CheckpointLSN DatabaseBackupLSN BackupStartDate BackupFinishDate SortOrder CodePage UnicodeLocaleId UnicodeComparisonStyle CompatibilityLevel SoftwareVendorId SoftwareVersionMajor SoftwareVersionMinor SoftwareVersionBuild MachineName Flags BindingID RecoveryForkID Collation FamilyGUID HasBulkLoggedData IsSnapshot IsReadOnly IsSingleUser HasBackupChecksums IsDamaged BeginsLogChain HasIncompleteMetaData IsForceOffline IsCopyOnly FirstRecoveryForkID ForkPointLSN RecoveryModel DifferentialBaseLSN DifferentialBaseGUID BackupTypeDescription BackupSetGUID CompressedBackupSize *** INCOMPLETE *** NULL NULL NULL NULL 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 

我确认.bak文件确实来自Microsoft SQL Server。 它没有encryption。 它是从Microsoft SQL Server 2012创build的,因为旧系统已经有几年了,这是值得怀疑的。 尝试使用临时安装SQL Server 2008 R2的Vista计算机进行导入

目标是将数据导入到不同的数据库中(例如使用ODBC),或者导入到我们可以创build导入程序的普通数据types( .csv.sql.xml等)中。

你是否build议使用除TSQL以外的其他方法来执行此导入?

你有错误信息的替代解释? 我不倾向于猜测我是否应该再次尝试更新或更旧的SQL Server版本,因为每次重新安装都需要大量时间,这是一种有限的资源。

如果这不是版本不匹配,那么备份文件可能实际上已损坏。

如果是这样的话,你将无法(至less很容易)从中恢复任何东西。

你确定备份是由一个文件组成的吗?

如果源服务器上的可用空间来自备份(假设它仍在运行),则可以尝试将备份还原到新数据库以确认备份是否正常

文件的头文件已损坏,或者是来自备份集的文件之一,备份文件将分散在多个文件中。

您需要获得数据库的新备份,否则您需要从备份集中获取其他文件。