У меня есть файл 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?
Вы можете создать пустую базу данных с тем же именем и именами файлов данных, отключить службу SQL и заменить файлы файлами с мертвого сервера. После того, как вы вернете службу SQL в оперативный режим, она попытается смонтировать файлы, но, скорее всего, она окажется подозрительной и станет недоступной для чтения.