以下命令
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。它没有加密。它是否由 Microsoft SQL Server 2012 创建值得怀疑,因为旧系统已有好几年历史了。尝试使用临时安装到装有 SQL Server 2008 R2 的 Vista 计算机上进行导入。
目标是将数据放入不同的数据库(例如,使用 ODBC),或者放入我们可以为其创建导入程序的普通数据类型(、、.csv
等)。.sql
.xml
您是否建议使用除 TSQL 之外的其他方法来执行此导入?
您对这个错误信息还有其他解释吗?我不太想猜测我是否应该在较新或较旧的 SQL Server 版本上重试,因为每次重新安装都会花费大量时间,而时间是一种有限的资源。
答案1
如果这不是版本不匹配,那么备份文件可能实际上已损坏。
如果是这种情况,您将无法(至少无法轻易)从中恢复任何内容。
答案2
您确定备份仅由一个文件组成吗?
如果备份来源服务器上有可用空间(假设它仍在运行),您可以尝试将备份还原到新数据库以确认备份良好
答案3
该文件的标题已损坏,或者这是来自备份集的文件之一,而备份分布在多个文件中。
您需要获取数据库的新备份,或者需要从备份集中获取其他文件。