使用PHP备份SQL Server

使用PHP备份SQL Server,php,sql,sql-server,database-backups,sqlsrv,Php,Sql,Sql Server,Database Backups,Sqlsrv,我想使用PHP脚本在SQL Server 2017上备份数据库,并将文件放在Web服务器(IIS)上的文件系统中 我的PHP脚本: $sql = "BACKUP DATABASE BGEDB TO DISK='\\\WWWDEV02\WWWDEV02-BGEDB\backups\BGEDB.bak'"; // $sql = BACKUP DATABASE BGEDB TO DISK='\\WWWDEV02\WWWDEV02-BGEDB\backups\BGEDB.bak' $stmt = sql

我想使用PHP脚本在SQL Server 2017上备份数据库,并将文件放在Web服务器(IIS)上的文件系统中

我的PHP脚本:

$sql = "BACKUP DATABASE BGEDB TO DISK='\\\WWWDEV02\WWWDEV02-BGEDB\backups\BGEDB.bak'";
// $sql = BACKUP DATABASE BGEDB TO DISK='\\WWWDEV02\WWWDEV02-BGEDB\backups\BGEDB.bak'
$stmt = sqlsrv_query($conn, $sql);
if ($stmt) {
  echo "Statement executed.<br>\n";
}
else {
  echo "Error in statement execution.\n";
  die( print_r( sqlsrv_errors(), true));
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
有谁能帮我解决这个问题吗?是否因为SQL Server和Web服务器之间的用户权限?或者我在PHP中逃避反斜杠时有没有做错什么

编辑:

我在SQL Server中编写了一个名为BGEDB_Backup的存储过程:

CREATE PROCEDURE BGEDB_Backup 
AS
BEGIN
    SET NOCOUNT ON;
    BACKUP DATABASE BGEDB TO DISK='\\WWWDEV02\WWWDEV02-BGEDB\backups\Datenbank_per_Skript\BGEDB1.bak'
END
GO
当我在ManagementStudio中运行此命令时,备份文件将写入IIS Web服务器的文件系统中。现在,我尝试在php中执行存储过程:

$sql = "EXEC BGEDB_Backup";
echo "SQL ---> ".$sql."<br /><br />";
$stmt = sqlsrv_prepare($conn, $sql);
if ($stmt) {
  echo "Statement executed.<br>\n";
}
else {
  echo "Error in statement execution.\n";
  die( print_r( sqlsrv_errors(), true));
}
$sql=“EXEC BGEDB_备份”;
回显“SQL-->.”$SQL。“

”; $stmt=sqlsrv_prepare($conn,$sql); 如果($stmt){ echo“已执行语句。
\n”; } 否则{ echo“执行语句时出错。\n”; 模具(打印错误(sqlsrv_errors(),true)); }
不幸的是,Web服务器的文件系统中没有发生任何事情


谢谢你的帮助

你肯定是在第一行错误地逃走了。它应该是
“备份数据库BGEDB到磁盘=”\\\\WWWDEV02\\WWWDEV02-BGEDB\\backups\\BGEDB.bak'
,假设前面需要两个斜杠。谢谢!但是$sql看起来完全一样,因此结果…:-(@RalfSemroch-mably.@Zhorov-谢谢,我已经测试过关闭警告,PHP脚本不再消亡,但备份文件将不会在Web服务器的文件系统中创建。SQL服务器和Web服务器之间的用户权限可能会有问题。我已经给我的管理部门写了一封邮件……你是definet在第一行错误地转义。它应该是
“BACKUP DATABASE BGEDB TO DISK='\\\\\WWWDEV02\\WWWDEV02-BGEDB\\backups\\BGEDB.bak'”
,假设前面需要两个斜杠。谢谢!但是$sql看起来完全一样,因此结果…:-(@RalfSemroch-mably.@Zhorov-谢谢,我已经测试过关闭警告,PHP脚本不再消亡,但是备份文件将不会在Web服务器的文件系统中创建。SQL服务器和Web服务器之间的用户权限可能会有问题。我已经给我的管理部门写了一封邮件。。。
$sql = "EXEC BGEDB_Backup";
echo "SQL ---> ".$sql."<br /><br />";
$stmt = sqlsrv_prepare($conn, $sql);
if ($stmt) {
  echo "Statement executed.<br>\n";
}
else {
  echo "Error in statement execution.\n";
  die( print_r( sqlsrv_errors(), true));
}