SQL Server, Восстановите файл.BKP в файл MDF, но не в LDF (для этого нет места)
У меня проблема, когда у меня недостаточно места для размещения файлов MDF и LDF из резервной копии LiteSpeed, которую мы сделали.
Я придумал следующее sproc:
exec master.dbo.xp_restore_database
@database = 'OSiteDB',
@filename = 'L:\OSiteDB_2009_01_07_Wed_LiteSpeed_Full.BKP',
@with = 'move "O1_SITEDB" to "S:\OSiteDB_Data.mdf"',
@with = 'move "O1_SITEDB_Log" to "Some dev null location??"
Есть ли способ, которым я могу указать местоположение LDF для некоторого нулевого местоположения? Я не хочу LDF, в качестве альтернативы, есть ли способ, которым я могу сказать, чтобы он вообще не читал ldf?
3 ответа
Вам необходимо восстановить LDF, а также MDF. Журнал является неотъемлемой частью базы данных: без него это не "база данных" в смысле СУБД.
В экстренных случаях необходимо подключить внешний диск или восстановить его в сжатую папку NTFS. Затем вы можете сжать файлы базы данных. Тем не менее, это только быстрое решение и поможет вам сделать это правильно.
Вы смотрели на варианты С NORECOVERY?
В частности, я полагаю, что вы можете восстановить базу данных WWITH NOCEOVERY и затем LOG WITH RECOVERY (без файла журнала).
Я не думаю, что вы можете избежать восстановления файла LDF. Но, как вы упомянули, вы можете восстановить его во временном местоположении.
--Step 1: Retrive the Logical file name of the database from backup.
RESTORE FILELISTONLY
FROM DISK = ‘L:\OSiteDB_2009_01_07_Wed_LiteSpeed_Full.BKP’
GO
--Step 2: Use the values in the LogicalName Column in following Step.
—-Make Database to single user Mode
ALTER DATABASE OSiteDB
SET SINGLE_USER WITH
ROLLBACK IMMEDIATE
—-Restore Database
RESTORE DATABASE OSiteDB
FROM DISK = ‘L:\OSiteDB_2009_01_07_Wed_LiteSpeed_Full.BKP’
WITH
MOVE ‘O1_SITEDB’ TO ‘S:\OSiteDB_Data.mdf’,
MOVE ‘O1_SITEDB_Log’ TO ‘C:\OSiteDB_Log.ldf’
/*If there is no error in statement before database will be in multiuser mode.
If error occurs please execute following command it will convert
database in multi user.*/
ALTER DATABASE OSiteDB SET MULTI_USER
GO
Измените место назначения файла LDF и посмотрите, что произойдет.