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 (без файла журнала).

http://msdn.microsoft.com/en-us/library/ms191253.aspx

Я не думаю, что вы можете избежать восстановления файла 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 и посмотрите, что произойдет.

Другие вопросы по тегам