使用CodeCeption(PHP)恢复数据库将使数据库处于;“恢复”;状态

使用CodeCeption(PHP)恢复数据库将使数据库处于;“恢复”;状态,php,sql-server,codeception,Php,Sql Server,Codeception,在使用CodeCeption(PHP)编写的验收测试开始时,我试图恢复MSSQL数据库。对于那些了解CodeCeption的人,我使用转储文件来运行恢复 我使用的restore命令在sqlmanagementstudio中运行时非常有效,但在测试套件中运行时,它将保持“Restoring”状态,因此不可用。运行 RESTORE DATABASE [dbname] WITH RECOVERY 此时将失败,并显示消息 “无法恢复数据库,因为未还原日志” 但是,运行完整还原命令(还原数据库[dbna

在使用CodeCeption(PHP)编写的验收测试开始时,我试图恢复MSSQL数据库。对于那些了解CodeCeption的人,我使用转储文件来运行恢复

我使用的restore命令在sqlmanagementstudio中运行时非常有效,但在测试套件中运行时,它将保持“Restoring”状态,因此不可用。运行

RESTORE DATABASE [dbname] WITH RECOVERY
此时将失败,并显示消息

“无法恢复数据库,因为未还原日志” 但是,运行完整还原命令(还原数据库[dbname] 从磁盘…)

在Management Studio中,此时将起作用。我在restore命令中使用了带REPLACE的RECOVERY

我也看过下面的博文(),但是上面的解决方案似乎也不起作用。我还尝试使用xp_cmdshell和sqlcmd的组合运行恢复,但仍然没有成功

我的理论是,CodeCeption运行转储文件的方式,它已经打开了与数据库的连接,因此我添加了一个

USE [master] 
在还原之前,检查活动监视器中的进程,以确保没有与正在还原的数据库的连接

我确信这是PHP CodeCeption代码中的一个问题,可以在这里看到-


有什么建议吗?

Codeception只是从您使用
dump
参数配置的SQL文件中执行SQL语句:

SqlSrv特定代码位于

如果您知道如何改进,欢迎您提供帮助。
请将SQL文件的内容添加到问题中。
如果它只包含RESTORE DATABASE语句,那么可能是pdo_sqlsrv驱动程序的问题


我唯一的建议是使用SQL语句CREATE TABLE和INSERT来填充数据库。

我使用的Restore命令是从磁盘还原数据库[dbname]='C:\Program Files\Microsoft SQL Server\MSSQLS11.MSSQLSERVER\MSSQL\Backup\Backup\U name.bak'和REPLACE,恢复我确信PDO _sqlsrv驱动程序有问题,但找不到它。不过,我现在已经通过使用数据库快照解决了这个问题。这个问题没有多大意义。什么是“恢复状态”?