0

我遇到了一个问题,我没有足够的空间来容纳我们完成的 LiteSpeed 备份中的 MDF 和 LDF 文件。

我想出了以下存储过程:

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?

4

3 回答 3

2

您需要恢复 LDF 以及 MDF。日志是数据库的一个组成部分:没有它,它就不是 RDBMS 意义上的“数据库”。

在紧急情况下,您需要插入外部驱动器或恢复到 NTFS 压缩文件夹。然后,您可以缩小数据库文件。然而,这只是一个快速修复,让你继续,这样你就可以正确地做到这一点。

于 2009-04-10T14:15:51.493 回答
0

你看过 WITH NORECOVERY 选项吗?

特别是,我相信您可以先恢复数据库 WWITH NOCEOVERY,然后再恢复 LOG WITH RECOVERY(没有日志文件)。

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

于 2009-01-29T23:57:57.467 回答
0

我认为您无法避免恢复 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 文件的目标位置,看看会发生什么。

于 2009-01-30T00:01:24.883 回答