Я сделал резервную копию базы данных:
BACKUP DATABASE MyDatabase
TO DISK = 'MyDatabase.bak'
WITH INIT --overwrite existing
А потом попробовал восстановить:
RESTORE DATABASE MyDatabase
FROM DISK = 'MyDatabase.bak'
WITH REPLACE --force restore over specified database
И теперь база данных застряла в состоянии восстановления.
Некоторые люди предположили, что это связано с тем, что в резервной копии не было файла журнала, и его нужно было откатить, используя:
RESTORE DATABASE MyDatabase
WITH RECOVERY
Разве что, конечно, не получается:
Msg 4333, Level 16, State 1, Line 1
The database cannot be recovered because the log was not restored.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
И именно то, что вам нужно в катастрофической ситуации, - это восстановление, которое не сработает.
Резервная копия содержит как файл данных, так и файл журнала:
RESTORE FILELISTONLY
FROM DISK = 'MyDatabase.bak'
Logical Name PhysicalName
============= ===============
MyDatabase C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase.mdf
MyDatabase_log C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase_log.LDF
DROP DATABASE db
через SSMS, и она сработала (раньше я использовал SSMS с другого компьютера для выполнения команд). Я предполагаю, что другие решения также сработали бы. - person Salman A   schedule 27.04.2017