Sql Server 2005从备份还原到最近的文件位置

我试图从磁盘恢复数据库到最近的备份。 备份中有四个备份集。 我想恢复最近的一个(今天采取)。 我需要能够用TSQL做到这一点。

下面的脚本工作:

RESTORE DATABASE DatabaseName FROM DISK = 'D:\Data\DatabaseName.bak' WITH FILE = 4, REPLACE 

但是,随着更多的备份,文件的位置将会改变。

有没有办法将备份还原到文件位置而不指定确切的文件编号? 就像“WITH FILE = most_recent_backup”

RESTORE HEADERONLY命令将为您提供文件中所有备份集的数据列表。 从那里你可以select最大的Position并将其传递给FILE参数。

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

不要把所有的备份放到一个文件中。 如果你这样做,该文件变得腐败,那么你已经失去了所有的备份。

在使用BACKUP DATABASE和RESTORE DATABASE命令时,请使用dynamic文件名将每个备份放入其自己的文件中。

马特的回答让我走向了正确的方向。 我需要存储结果集,然后才能select最大位置。 我的search引导我到这个解决schemehttp://sqlforums.windowsitpro.com/web/forum/messageview.aspx?catid=74&threadid=93926&enterthread=y

 set nocount on Create Table #header ( BackupName nvarchar(128), BackupDescription nvarchar(255), BackupType smallint, ExpirationDate datetime, Compressed bit, Position smallint, DeviceType tinyint, UserName nvarchar(128), ServerName nvarchar(128), DatabaseName nvarchar(128), DatabaseVersion int, DatabaseCreationDate datetime, BackupSize numeric(20,0), FirstLSN numeric(25,0), LastLSN numeric(25,0), CheckpointLSN numeric(25,0), DatabaseBackupLSN numeric(25,0), BackupStartDate datetime, BackupFinishDate datetime, SortOrder smallint, CodePage smallint, UnicodeLocaleId int, UnicodeComparisonStyle int, CompatibilityLevel tinyint, SoftwareVendorId int, SoftwareVersionMajor int, SoftwareVersionMinor int, SoftwareVersionBuild int, MachineName nvarchar(128), Flags int, BindingID uniqueidentifier, RecoveryForkID uniqueidentifier, Collation nvarchar(128), FamilyGUID uniqueidentifier, HasBulkLoggedData bit, IsSnapshot bit, IsReadOnly bit, IsSingleUser bit, HasBackupChecksums bit, IsDamaged bit, BeginsLogChain bit, HasIncompleteMetaData bit, IsForceOffline bit, IsCopyOnly bit, FirstRecoveryForkID uniqueidentifier, ForkPointLSN numeric(25,0) NULL, RecoveryModel nvarchar(60), DifferentialBaseLSN numeric(25,0) NULL, DifferentialBaseGUID uniqueidentifier, BackupTypeDescription nvarchar(60), BackupSetGUID uniqueidentifier NULL ) insert #header Exec ('restore headeronly from disk = ''\\pathToBackup\file.bak''') select backupstartdate from #header drop table #header