我試圖在使用CodeCeption(PHP)編寫驗收測試運行開始恢復MSSQL數據庫讓數據庫。對於那些知道CodeCeption的人,我使用轉儲文件來運行恢復。使用CodeCeption(PHP)恢復數據庫中的「恢復」狀態
我正在使用的還原命令在SQL Management Studio中運行時完美工作,但是從測試套件運行時,它仍處於「還原」狀態,因此無法使用。在這一點上運行
RESTORE DATABASE [dbname] WITH RECOVERY
將失敗,消息
「數據庫無法恢復,因爲日誌未還原」,然而 運行完整恢復命令(RESTORE DATABASE [DBNAME] FROM DISK ....)
在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
有什麼建議?
這個問題沒有多大意義。什麼是「恢復狀態」?我使用 –