以下命令
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 版本上重试,因为每次重新安装都需要花费大量时间,而这是一种有限的资源。
如果这不是版本不匹配,则备份文件实际上可能已损坏。
如果是这种情况,您将无法(至少很容易)从中恢复任何内容。
您确定备份包含一个文件吗?
如果备份来自的源服务器上有可用空间(假设它仍在运行),您可以尝试将备份恢复到新数据库以确认备份是好的
文件的标头已损坏,或者这是备份集中分布在多个文件中的文件之一。
您需要获取数据库的新备份,或者您需要从备份集中获取其他文件。