【问题标题】:Why does this code fail to run in PHP but works fine in Management Studio为什么此代码无法在 PHP 中运行,但在 Management Studio 中运行良好
【发布时间】:2017-02-20 14:03:13
【问题描述】:

我正在尝试从较旧的备份中备份和恢复数据库。

我使用此 SQL 代码来执行此操作:

ALTER DATABASE [UKBYTEDB] SET RECOVERY FULL;

BACKUP DATABASE [UKBYTEDB] TO DISK = 'C:/xampp/htdocs/UKBYTEDB/dev/UKBYTEDB- 2017-02-20.Bak' WITH FORMAT, MEDIANAME = 'Z_SQLServerBackups', NAME = 'Full Backup of [UKBYTEDB] - 2017-02-20';

ALTER DATABASE UKBYTEDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 

BACKUP LOG UKBYTEDB TO DISK = 'C:/xampp/htdocs/UKBYTEDB/dev/UKBYTEDB-LOG- 2017-02-20.Bak' WITH NORECOVERY
RESTORE DATABASE [UKBYTEDB] FROM DISK = 'C:/xampp/htdocs/UKBYTEDB/dev/UKBYTEDB-defualt.Bak' WITH RECOVERY;

与主数据库连接的我的 PHP 代码:

$RUN = sqlsrv_query($masterDBlink,$RestoreDefualtDB);   
if($RUN === false) 
{ 
    die(print_r(sqlsrv_errors())); 
} 
else 
{ 
    echo 'Done!'; 
}

然后我得到这个错误:

Array ( [0] => Array ( [0] => 01000 [SQLSTATE] => 01000 [1] => 4035 [code] => 4035 [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Processed 2304 pages for database 'UKBYTEDB', file 'wardobsliveisle' on file 1. [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Processed 2304 pages for database 'UKBYTEDB', file 'wardobsliveisle' on file 1. ) ) 1

【问题讨论】:

  • 这不是错误信息。
  • @JayBlanchard 你知道它为什么会失败并返回 false 吗?

标签: php sql-server ssms database-backups database-restore


【解决方案1】:

如果代码在 Management Studio 中运行并且您的连接良好,我建议您将 NOCOUNT 放在您的第一条语句之前,看看它是否有效:

SET NOCOUNT ON
ALTER DATABASE [UKBYTEDB]...

【讨论】:

  • 我用 NOCOUNT 对其进行了测试,但仍然显示相同的输出。我在语句之前尝试了 USE MASTER 并且返回是 TRUE 而不是 false 没有错误但备份文件没有保存。我已经测试了连接它很好,我可以插入、删除和选择它只是备份失败。
【解决方案2】:

终于找到了让它工作的东西:

在连接后立即添加此代码

sqlsrv_configure( "WarningsReturnAsErrors", 0 );

然后在备份和恢复查询之后添加这个

 usleep(600);
 set_time_limit(2000);

然后在代码末尾运行此查询

$sql = "USE [UKBYTEDB]";
$stmt = sqlsrv_query($masterDBlink, $sql);

【讨论】:

    【解决方案3】:

    我遇到了这个确切的问题——查询在 PHP 中不起作用,但查询在 SQL Management Studio 中起作用。事实证明,我正在执行的存储过程中有几个 PRINT 语句,是调试时遗留下来的。一旦我删除了这些语句,它就起作用了。

    【讨论】:

      猜你喜欢
      • 2020-06-04
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      相关资源
      最近更新 更多