PDA

View Full Version : دستور Restore با تغییر نام منطقی



تبسم ساینا
یک شنبه 09 فروردین 1394, 15:24 عصر
سلام .. دستور Restore ای که استفاده میکنم اینجوریه :
RESTORE DATABASE DBName FROM DISK ='BackupPath' WITH MOVE 'PhysicalNamebackup' TO 'SqlPath\\DBName.mdf', MOVE 'LogicalNameBackup' TO 'SqlPath\\DBName.ldf'

LogicalNameBackup و PhysicalNamebackup نام های مربوط به فایل بک آپی هست که قراره ریستور بشه
میخواستم ببینم چطور میشه LogicalNameBackup و PhysicalNamebackup اون فایل بک آپ رو که نمیدونم بدست بیارم و اینجا جایگزین کنم؟
البته این کد رو پیدا کردم که نام فیزیکی و منطقی فایل بک آپ رو میده ولی نمیدونم چجوری ازش تو دستور Restore استفاده کنم ؟
RESTORE FILELISTONLYFROM DISK = 'BackupPath.back' With File=1
GO

pezhvakco
دوشنبه 10 فروردین 1394, 18:55 عصر
این کد دستور شما هنگامی کاربرد داره که بخوای از یا یک فایل پشتیبان یک پایگاه داده تازه بسازین و اگه خواسته شما همین است
میتوانید با این کد دستورها نام فایل های پایگاه داده ای که از اون پشتیبان ساخته شده را بدست بیارید

DECLARE @Table TABLE (LogicalName varchar(128),[PhysicalName] varchar(128),
[Type] varchar, [FileGroupName] varchar(128), [Size] varchar(128),
[MaxSize] varchar(128), [FileId]varchar(128), [CreateLSN]varchar(128),
[DropLSN]varchar(128), [UniqueId]varchar(128), [ReadOnlyLSN]varchar(128),
[ReadWriteLSN]varchar(128), [BackupSizeInBytes]varchar(128),
[SourceBlockSize]varchar(128), [FileGroupId]varchar(128),
[LogGroupGUID]varchar(128), [DifferentialBaseLSN]varchar(128),
[DifferentialBaseGUID]varchar(128),
[IsReadOnly]varchar(128), [IsPresent]varchar(128), [TDEThumbprint]varchar(128)
)

DECLARE @Path varchar(1000)='..\DBBackUp.bak'
DECLARE @LogicalNameData varchar(128),@LogicalNameLog varchar(128)

INSERT INTO @table
EXEC('RESTORE FILELISTONLY
FROM DISK=''' +@Path+ ''' ')

SET @LogicalNameData=(SELECT LogicalName FROM @Table WHERE Type='D')
SET @LogicalNameLog=(SELECT LogicalName FROM @Table WHERE Type='L')

SELECT @LogicalNameData,@LogicalNameLog