Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

PHP извиква скрипт за архивиране на база данни на sqlserver, архивен файл е създаден и след това изтрит

Ето решение, което работи за мен:

  • изпълни sqlsrv_configure("WarningsReturnAsErrors", 0); за да промените настройките за обработка на грешки.
  • премахнете WITH STATS = 1 от BACKUP DATABASE изявление.

Мога да възпроизведа този проблем с тестов случай, използвайки Apache 2.4, PHP 7.1.12 и Microsoft PHP драйвер за SQL Server (php_sqlsrv_71_ts_x86.dll, версия 4.3). Единствената разлика е, че примерът използва SQLSRV драйвер (не мога да използвам PDO_SQLSRV драйвер в моята тестова среда).

PHP

<?php
    sqlsrv_configure("WarningsReturnAsErrors", 0);

    // Connection
    $serverName = "127.0.0.1\instance,1433";
    $connectionInfo = array(
        "UID"=>"user",
        "PWD"=>"password",
        "Database"=>"ProdDB"
    );
    $conn = sqlsrv_connect($serverName, $connectionInfo);
    if ($conn === false) {
        echo "Unable to connect.</br>";
        die(var_export(sqlsrv_errors(), true));
    }

    // Backup database
    $strSQL = file_get_contents("archdata.sql");
    if (!empty($strSQL)) {
        $query = sqlsrv_query($conn, $strSQL);
        if ($query === false) {
            die(var_export(sqlsrv_errors(), true));
        } else {
            sleep(5);  
            echo "Success";
        }
    }   
?>

T-SQL (archdata.sql)

declare 
    @path varchar(100),
    @fileDate varchar(20),
    @fileName varchar(140)

SET @path = 'd:\Backup\'   
SELECT @fileDate = CONVERT(VARCHAR(20), GETDATE(), 112)  
SET @fileName = @path + 'ProdDB_' + @fileDate + '.BAK' 
BACKUP DATABASE ProdDB TO [email protected]

Не забравяйте да дадете необходимите права на папката „D:\Backup“.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Анализ на MS SQL Server за тези, които го виждат за първи път

  2. Има ли значение редът на колоните в клауза WHERE?

  3. Използване на кортежи в SQL IN клауза

  4. Настройка на SQL Server – всичко е за измерване

  5. Ефект на подсказката NOLOCK в операторите SELECT