Я хотел бы сделать резервную копию базы данных на SQL Server 2017 с помощью сценария PHP и поместить файл в мою файловую систему на веб-сервере (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);
Результат:
Ошибка в выполнении оператора. Array ([0] => Array ([0] => 01000 [SQLSTATE] => 01000 [1] => 4035 [code] => 4035 [2] => [Microsoft] [ODB C Драйвер 17 для SQL Сервер] [SQL Сервер] 536 Seiten wurden für d ie BGEDB-Datenbank, Datei "BGEDB" для Datei 2, verarbeitet. [Сообщение] => [Microsoft] [ODB C Драйвер 17 для SQL Сервер] [SQL Сервер] 536 Seiten wurden für d ie BGEDB-Datenbank, Datei "BGEDB" для Datei 2, verarbeitet.))
В SQL Server Management Studio есть нет проблем с использованием команды в $ sql:
BACKUP DATABASE BGEDB TO DISK='\\WWWDEV02\WWWDEV02-BGEDB\backups\BGEDB.bak'
Пожалуйста, кто-нибудь может мне помочь с моей проблемой? Это из-за прав пользователя между SQL Сервером и веб-сервером? Или я сделал что-то не так с экранированием обратной косой черты в PHP?
Edit:
Я написал хранимую процедуру BGEDB_Backup на SQL Server:
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
Когда я запускаю это в Management Studio, файл резервной копии будет записан в файловой системе IIS-веб-сервера. Теперь я попытался выполнить c хранимую процедуру в моем 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));
}
К сожалению, ничего не происходит в файловой системе веб-сервера ...
Спасибо за вашу помощь!