【发布时间】: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