数据库还原事务日志问题

流逝 2016-06-29 07:53:02
正常运行的sqlserver ,想还原事务日志,应该如何进行?
语句是:
declare @ID int; --定义变量来保存ID号
declare @log_name varchar(200);
DECLARE @query NVARCHAR(500); --定义变量来保存值
declare @max_id int
select @max_id = max(id) from [my_console_db].[dbo].[log_trace_tb] with (nolock)
SET @query='';
declare mycursor cursor for
select ID,log_name from [my_console_db].[dbo].[log_trace_tb] with (nolock) where restore_status=0 and log_name>'DaiGou.Com_backup_2016_06_28_173501_3284590.trn' and id>12358
order by log_name
--and id=@max_id --为所获得的数据集指定游标
open mycursor --打开游标
fetch next from mycursor into @ID,@log_name --开始抓第一条数据
while(@@fetch_status=0) --如果数据集里一直有数据
begin
set @query = 'alter database [DaiGou.Com] set offline with rollback immediate;
alter database [DaiGou.Com] set online;
restore database [DaiGou.Com] from disk = ''E:\sqlserver\log'+'\'+@log_name+''''+
' with standby = ''E:\sqlserver\backup\DaiGou.Com_D_20160626.bak'''
--print @query
exec(@query)
update [my_console_db].[dbo].[log_trace_tb] set restore_status = 1 where id = @ID
fetch next from mycursor into @ID,@log_name --跳到下一条数据
end
close mycursor --关闭游标
deallocate mycursor --删除游标




还原时候提示 无法还原日志备份或差异备份,因为没有文件可用于前滚:
...全文
201 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
一般恢复操作是这样的: 1、恢复完整备份 2、如果有差异备份,可以恢复差异备份 3、逐个恢复日志备份 所以,如果你要想在系统正在运行的情况下,进行恢复,那是不太可能的,这种情况下,只能进行逻辑恢复,比如这么进行: 如果服务器上有足够的磁盘空间,可以进行上面说的1-2-3步,然后数据都恢复之后,把要恢复涉及到的数据导出,然后再导入到 当前正在运行的数据库,这样就不会影响当前数据库,同时也能恢复数据。
唐诗三百首 2016-06-29
  • 打赏
  • 举报
回复
还原事务日志备份前, 需还原一个完整备份,且必须带with norecovery选项.

 restore database [DaiGou.Com] from disk='完整备份文件' with norecovery
misterliwei 2016-06-29
  • 打赏
  • 举报
回复
先要恢复完全备份,再恢复日志备份。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧