【问题标题】:SQL Server: Database stuck in “Restoring” state with PHPSQL Server:数据库卡在 PHP 的“正在恢复”状态
【发布时间】:2012-01-29 03:59:05
【问题描述】:

我尝试按照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");

我遇到了一个异常。

请帮忙。

【问题讨论】:

  • 致命错误:未捕获异常 'PDOException' 并带有消息 'SQLSTATE[42000]:[Microsoft][SQL Server Native Client 10.0][SQL Server]数据库无法恢复,因为日志没有恢复。 '在 C:\xampp\htdocs\mssql\restore.php:31 堆栈跟踪:#0 C:\xampp\htdocs\mssql\restore.php(31): PDO->exec('RESTORE DATABAS...') # 1 {main} 在第 31 行的 C:\xampp\htdocs\mssql\restore.php 中抛出
  • 我好久没写PHP了,你能把$backfile放在这样的字符串里吗?
  • 是的。代码运行完美。它恢复了数据库,但使数据库处于恢复状态。

标签: sql-server pdo restore


【解决方案1】:

PDO驱动好像有问题,这个问题可能出在驱动构建的ODBC/SNAC层。但是这种数据库恢复与其他驱动程序配合得很好。 我尝试使用 sqlsrv 和 mssql,它们运行良好。 更多详情请见Restoring a SQL Server Database from PHP

【讨论】:

    猜你喜欢
    • 2010-10-05
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多