Архивирах база данни:
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