【发布时间】:2016-03-03 09:29:58
【问题描述】:
我正在尝试在使用 CodeCeption (PHP) 编写的验收测试运行开始时恢复 MSSQL 数据库。对于那些知道 CodeCeption 的人,我正在使用转储文件来运行恢复。
我使用的恢复命令在 SQL Management Studio 中运行时运行良好,但从测试套件运行时,它保持在“正在恢复”状态,因此无法使用。运行
RESTORE DATABASE [dbname] WITH RECOVERY
此时将失败并显示消息
“无法恢复数据库,因为日志没有恢复” 但是运行完整的恢复命令(RESTORE DATABASE [dbname] 从磁盘....)
此时在 Management Studio 中将起作用。我在恢复命令上使用 WITH REPLACE、RECOVERY。
我还查看了以下博客文章 (https://blogs.msdn.microsoft.com/brian_swan/2010/07/01/restoring-a-sql-server-database-from-php/),但那里发布的解决方案似乎也不起作用。我也尝试使用 xp_cmdshell 和 sqlcmd 的组合运行还原,但仍然没有成功。
我推测 CodeCeption 运行转储文件的方式已经与打开的数据库建立了连接,所以我添加了一个
USE [master]
在恢复之前立即检查活动监视器中的进程以确保没有与正在恢复的数据库的连接。
我确信这是 PHP CodeCeption 代码中的一个问题,可以在这里看到 - https://github.com/Codeception/Codeception/blob/2.1/src/Codeception/Module/Db.php
有什么建议吗?
【问题讨论】:
-
这个问题没有多大意义。什么是“恢复状态”?
标签: php sql-server codeception