我有两个SQL Server 2008 R2服务器,一个用于PROD,另一个用于DR。我正在尝试为名为 School 的数据库添加日志传送。
到目前为止的步骤
- 备份学校数据库
-
使用 UI 或使用以下 SQL 语句使用数据库进行还原,即
Restore database "School" From disk ='t:DataSchool.bak' with NoRecovery
-
结果是数据库卡在还原中
-
如果我使用
Restore database "School" From disk ='t:DataSchool.bak' With recovery
数据库还原完成,但日志传送失败。
-
我删除了数据库并再次使用
Restore database "School" From disk ='t:DataSchool.bak' With **NoRecovery**
但它仍然卡在恢复状态。
有没有办法可以还原数据库而不会使数据库卡在还原状态。
这对我来说似乎是预期的行为。 我是不是看错了什么?
使用NORECOVERY
选项还原数据库以及任何差异或所需的事务日志备份后,需要告诉 SQL Server 你已完成文件还原。NORECOVERY
选项专门用于让您还原多个文件。
您只需要运行:
RESTORE DATABASE [School] WITH RECOVERY;
这将告诉SQL Server您已完成,它将完成还原,并且将不再显示为还原。
我已经删除了数据库,并使用从磁盘='t:\Data\School.bak'与NoRecovery恢复数据库"学校"再次重新创建它
如果您没有任何进一步的日志,您还必须使用以下命令
restore database databasename with recovery
更多信息:
使用 UI 或使用以下 SQL 语句使用数据库进行还原,即
下次尝试使用 tsql 发出还原语句,以便了解状态
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 恢复数据库: 数据库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 停止数据库dbPerf_MAIN
上的全文爬网2008-01-23 08:59:56.32 spid52 卸载全文目录
2008-01-23 08:59:56.32 spid52 X-锁定数据库:dbPerf_MAIN
2008-01-23 08:59:56.32 spid52 恢复:规划完成
2008-01-23 08:59:56.32 spid52 恢复:开始恢复(脱机(
dbPerf_MAIN 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