我从一台死机服务器上获取了一个 MDF 和 LDF 文件,我正尝试将其附加到另一个 SQL Server 实例。但是运行以下创建数据库语句
USE [master]
GO
CREATE DATABASE [DBName] ON
( FILENAME = N'C:\tmp\DBName.mdf' ),
( FILENAME = N'C:\tmp\DBName_log.ldf' )
FOR ATTACH
GO
生成此错误。
Msg 1813, Level 16, State 2, Line 1
Could not open new database 'DBName'. CREATE DATABASE is aborted.
Msg 5125, Level 24, State 2, Line 1
File 'C:\tmp\DBName.mdf' appears to have been truncated by the operating system. Expected size is 675840 KB but actual size is 47160 KB.
通过阅读 MSDN 条目,我看不到创建数据库语句上的任何选项可以让我忽略这一点。有没有其他方法可以强制恢复而忽略截断以检索部分数据,或者 mdf 是否无法恢复?
除此之外,是否有任何实用程序可以让我读取 LDF 文件的内容?
答案1
您可以创建一个具有相同名称和数据文件名的空数据库,关闭 SQL 服务,并用死机服务器中的文件替换这些文件。一旦 SQL 服务恢复在线,它将尝试安装这些文件,但更有可能出现可疑情况并且无法读取。