--try declare @str nvarchar(max) select @str=isnull(@str,'')+'RESTORE DATABASE NetDetective'+dt+' from disk=N''D:\baks\'+dt+'.bak'' with RESTRICTED_USER, FILE = 1, NOUNLOAD, REPLACE, STATS = 10 ' from( select convert(varchar(8),dateadd(d,number,'20110415'),112)dt from master..spt_values where type='p' and dateadd(d,number,'20110415')<='20110613' )t exec (@str) --or try declare @dt datetime declare @str nvarchar(max) set @dt='20110415' while @dt<='20110613' begin set @str='RESTORE DATABASE NetDetective'+@dt+' from disk=N''D:\baks\'+@dt+'.bak'' with RESTRICTED_USER, FILE = 1, NOUNLOAD, REPLACE, STATS = 10 ' exec(@str) set @dt=convert(varchar(8),dateadd(d,1,@dt),112) end go 不过,除非数据库特多,不提倡这样处理,还是手动处理为好,因为,你不知道备份是否为被追加的备份.
[code=BatchFile]@echo off rem 批处理就要反过来写了,当前xp_cmdshell反过来一样 Set BakFilePath=c:\test for /f "delims=" %%i in ('dir %BakFilePath%\*.bak /b /a-d') do ( osql -E -Q "restore database %%~ni From Disk='%%~dpnxi'" ) osql -S .\SQL2005 -E -Q "select name from sysdatabases" pause>nul [/code]
declare @str nvarchar(max)
select @str=isnull(@str,'')+'RESTORE DATABASE NetDetective'+dt+' from disk=N''D:\baks\'+dt+'.bak'' with RESTRICTED_USER, FILE = 1, NOUNLOAD, REPLACE, STATS = 10 '
from(
select convert(varchar(8),dateadd(d,number,'20110415'),112)dt from master..spt_values where type='p' and dateadd(d,number,'20110415')<='20110613'
)t
exec (@str)
--or try
declare @dt datetime
declare @str nvarchar(max)
set @dt='20110415'
while @dt<='20110613'
begin
set @str='RESTORE DATABASE NetDetective'+@dt+' from disk=N''D:\baks\'+@dt+'.bak'' with RESTRICTED_USER, FILE = 1, NOUNLOAD, REPLACE, STATS = 10 '
exec(@str)
set @dt=convert(varchar(8),dateadd(d,1,@dt),112)
end
go
不过,除非数据库特多,不提倡这样处理,还是手动处理为好,因为,你不知道备份是否为被追加的备份.
rem 批处理就要反过来写了,当前xp_cmdshell反过来一样
Set BakFilePath=c:\test
for /f "delims=" %%i in ('dir %BakFilePath%\*.bak /b /a-d') do (
osql -E -Q "restore database %%~ni From Disk='%%~dpnxi'"
)
osql -S .\SQL2005 -E -Q "select name from sysdatabases"
pause>nul
[/code]
对文件 "d:\Program Files\Rainsoft\NetDetective\Database\NDHistoryLogBak.mdf" 的目录查找失败,出现操作系统错误 3(系统找不到指定的路径。)。
消息 3156,级别 16,状态 3,第 1 行
文件 'NDHistoryLogBak' 无法还原为 'd:\Program Files\Rainsoft\NetDetective\Database\NDHistoryLogBak.mdf'。请使用 WITH MOVE 选项来标识该文件的有效位置。
消息 5133,级别 16,状态 1,第 1 行
对文件 "d:\Program Files\Rainsoft\NetDetective\Database\NDHistoryLogBak_log.ldf" 的目录查找失败,出现操作系统错误 3(系统找不到指定的路径。)。
消息 3156,级别 16,状态 3,第 1 行
文件 'NDHistoryLogBak_log' 无法还原为 'd:\Program Files\Rainsoft\NetDetective\Database\NDHistoryLogBak_log.ldf'。请使用 WITH MOVE 选项来标识该文件的有效位置。
消息 3119,级别 16,状态 1,第 1 行
在计划 RESTORE 语句时发现了问题。以前的消息提供了详细信息。