SQL Server:数据库在PHP中处于“恢复”状态

时间:2012-01-29 03:59:05

标签: sql-server pdo restore

我尝试按照SQL Server: Database stuck in "Restoring" state的说明备份我的数据库。但我的数据库卡在“恢复”状态。 php代码如下:

$database = "container";
$uid = "sa";
$pwd = "12345" ; 

try {
      $conn = new PDO( "sqlsrv:Server=localhost\SQLEXPRESS;Database=$database", 
          $uid, 
          $pwd
          //,array(PDO::ATTR_PERSISTENT => true)
          ); 
  $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); }
catch( PDOException $e ) {
  die( "Error connecting to SQL Server" ); }

echo "Connected to SQL Server\n";

$backfile = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\sql server bk' ;
echo "Connected to SQL Server\n";
$backfile = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\sql server bk'  ;

$query = "RESTORE DATABASE child_database FROM DISK = '$backfile' WITH  REPLACE, RECOVERY ";
$conn->exec($query);

运行此代码后,我的child_database陷入了恢复状态。但是我复制了sql命令

RESTORE DATABASE child_database FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\sql server bk' WITH  REPLACE, RECOVERY

并在microsoft sql server管理工具中运行它可以正常工作。

我尝试运行添加php代码

$conn->exec("RESTORE DATABASE child_database WITH RECOVERY");

我有例外。

请帮忙。

1 个答案:

答案 0 :(得分:3)

PDO驱动程序似乎有问题,这个问题可能出现在构建驱动程序的ODBC / SNAC层中。但是这个数据库恢复与其他驱动程序很好地兼容。 我尝试使用sqlsrv和mssql,它们运行良好。 有关更多详细信息,请参阅Restoring a SQL Server Database from PHP