为什么这段代码无法在PHP中运行,但在ManagementStudio中运行良好
我正在尝试从较旧的备份中备份和还原数据库 我使用以下SQL代码来执行此操作:为什么这段代码无法在PHP中运行,但在ManagementStudio中运行良好,php,sql-server,ssms,database-backups,database-restore,Php,Sql Server,Ssms,Database Backups,Database Restore,我正在尝试从较旧的备份中备份和还原数据库 我使用以下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 [U
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;
连接到Master DB的我的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
如果代码在ManagementStudio中运行,并且您的连接良好,我建议您在第一条语句之前不加计数,看看它是否有效:
SET NOCOUNT ON
ALTER DATABASE [UKBYTEDB]...
终于找到了让它发挥作用的方法: 在连接后立即添加此代码
sqlsrv_configure( "WarningsReturnAsErrors", 0 );
然后将其添加到备份和还原查询之后
usleep(600);
set_time_limit(2000);
然后在代码末尾运行此查询
$sql = "USE [UKBYTEDB]";
$stmt = sqlsrv_query($masterDBlink, $sql);
我有一个确切的问题——查询在PHP中不起作用,但在SQL Management Studio中起作用。事实证明,我正在执行的存储过程中有两个PRINT语句,它们是调试遗留下来的。一旦我删除了这些语句,它就工作了。这不是一条错误消息。@JayBlanchard你知道它失败并返回false的原因吗?我用NOCOUNT测试了它,但仍然显示相同的输出。我在语句之前尝试使用MASTER,返回值为TRUE而不是false没有错误,但是备份文件没有保存。我已经测试了连接,可以插入、删除和选择,只是备份失败了。