У меня есть скрипт на PHP с sqlsrv, который подключается к базе данных SQL Server 2016, выполняет запросы SQL и получает результаты. До здесь нет проблем.
Но если я попытаюсь выполнить команду DBCC CHECKIDENT ($ Table, RESEED, $ NextIdentity) или BACKUP DATABASE, как только команда «напечатает» что-то, функция sqlsrv_query вернется и вернет FALSE.
Пример:
sqlsrv_query( "BACKUP DATABASE MYDB TO DISK = 'C:\\Backup\\MYDB.bak'" );
Sqlsrv_query возвращает FALSE, а sqlsrv_errors содержит:
Array
(
[0] => Array
(
[0] => 01000
[SQLSTATE] => 01000
[1] => 3211
[code] => 3211
[2] => [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]10 percent processed.
[message] => [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]10 percent processed.
)
)
Для некоторых команд DBCC можно использовать их, указав «WITH TABLERESULTS», что решит проблему, но конкретный DBCC, который мне нужен, не поддерживает это.
В идеале я хотел бы, чтобы решение было синхронным (например, ожидание окончания резервного копирования перед возвратом) и которое позволяло бы мне проверить, была ли операция DBCC или BACKUP успешной.
Задача ещё не решена.
Других решений пока нет …