我有两个SQL Server 2008 R2服务器,一个用于PROD,另一个用于DR。我正在尝试为名为School的数据库添加日志传送。
到目前为止的步骤
使用UI或使用以下SQL语句(即
)使用数据库进行还原Restore database "School"
From disk ='t:\Data\School.bak'
with NoRecovery
结果是数据库陷入了恢复
如果我使用
恢复数据库Restore database "School"
From disk ='t:\Data\School.bak'
With recovery
数据库恢复已完成,但日志传送失败。
我删除了数据库并使用
重新创建了它Restore database "School"
From disk ='t:\Data\School.bak'
With **NoRecovery**
但它仍然停留在恢复状态。
有没有办法可以恢复数据库,而不会让数据库陷入恢复状态。
答案 0 :(得分:1)
这对我来说似乎是预期的行为。我误读了什么吗?
使用NORECOVERY
选项还原数据库和任何差异或必需的事务日志备份后,您需要告诉SQL Server您已完成还原文件。 NORECOVERY
选项专门用于恢复多个文件。
你应该只需要运行:
RESTORE DATABASE [School] WITH RECOVERY;
这将告诉SQL Server你已完成,它将完成恢复,它将不再显示为恢复。
答案 1 :(得分:0)
我删除了数据库并使用还原数据库“School”从disk ='t:\ Data \ School.bak'再次重新创建它,并带有NoRecovery
如果你没有任何进一步的日志,你必须使用下面的命令
restore database databasename with recovery
更多信息:
使用UI或使用以下SQL语句(即
)使用数据库进行还原
下次尝试使用tsql发出restore语句,以便您可以知道状态
restore database databasename from disk="path"
with stats=5
现在,如果你想知道它的位置和它在做什么的深入细节,你可以使用如下的跟踪标志
dbcc traceon(3004,3605,-1)
GO
restore database databasename from disk="path"
with stats=5
这会将输出记录到错误日志,如下所示
2008-01-23 08:59:56.26 spid52 RestoreDatabase:数据库dbPerf_MAIN
2008-01-23 08:59:56.26 spid52打开备份组
2008-01-23 08:59:56.31 spid52恢复:配置部分已加载2008-01-23 08:59:56.31 spid52恢复:备份集已打开
2008-01-23 08:59:56.31 spid52恢复:计划开始了 2008-01-23 08:59:56.32 spid52暂停FullText对数据库dbPerf_MAIN的爬网
2008-01-23 08:59:56.32 spid52拆卸FullText目录
2008-01-23 08:59:56.32 spid52 X-locking数据库:dbPerf_MAIN
2008-01-23 08:59:56.32 spid52恢复:规划完成
2008-01-23 08:59:56.32 spid52恢复:dbPerf_MAIN上的BeginRestore(离线)
2008-01-23 08:59:56.40 spid52恢复:准备容器 2008-01-23 08:59:56.43 spid52恢复:容器准备就绪
对于您当前的问题,您可以查看事件日志,因为它将记录当前阶段
有没有办法可以恢复数据库,而不会让数据库陷入恢复状态。
您必须获得备份的spid并查看等待类型并进行相应的故障排除
select * from sys.dm_Exec_requests where sessionid=backupspid