Есть ли способ для PHP PDO определить, восстанавливается ли база данных t-sql? - PullRequest
0 голосов
/ 07 ноября 2019

Мне бы хотелось, чтобы мой PHP-скрипт (использующий PDO) обнаруживал, находится ли целевая база данных в процессе восстановления, кроме ожидания нескольких минут ответа от сбойного соединения.

MyКод подключения к базе данных в конечном итоге возвращает приведенное ниже сообщение, если база данных восстанавливается, но это происходит из-за сбоя подключения и для ответа требуется несколько минут, когда это происходит. Поиск в StackOverflow и Google, похоже, не находит ничего подходящего мне, равно как и поиск по документации PHP.

function getParameterizedPDOConnection($host = false, $overrideOptions = []) {
    include(INCLUDE_DIR . "/itrain.config.php");
    $host = strtolower($_SERVER["HTTP_HOST"]);

    if (count($overrideOptions) > 0) {
        $configOptions["host"][$host] = $overrideOptions;
    }

    $sthUserName = $configOptions["userName"];
    $pwd = $configOptions["pwd"];
    $addr = $configOptions["host"][$host]["addr"];
    $db = $configOptions["host"][$host]["db"];

    try {
        $pdo = new PDO("sqlsrv:Server=$addr;Database=$db;ConnectionPooling=0", $sthUserName, $pwd, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT));
        return($pdo);
    } catch (PDOException $e) {
        return "Database connection failure: " . $e->getMessage();
    }
}

Возвращает: "42000", 927, "[Microsoft] [Драйвер ODBC 13 дляSQL Server] [SQL Server] База данных «Рабочая сила» не может быть открыта. Она находится в процессе восстановления.

...