gpt4 book ai didi

php调用sqlserver备份数据库脚本,备份文件创建后删除

转载 作者:行者123 更新时间:2023-12-03 23:55:36 27 4
gpt4 key购买 nike

我有一个 php 调用 sqlserver 备份脚本。
该脚本,如果直接从 SSMS 执行,它会成功创建备份。但是,当通过 php 调用时,我可以看到在目标文件夹中创建的文件,但似乎当 php 完成时,该文件也被删除了。
我在这里做错了什么?

PHP:

$strSQL = file_get_contents("archdata.sql");
if (!empty($strSQL)) {
$query=$conn->prepare($strSQL);
if ($query->execute()) {
sleep(5);
echo "1";
} else {
echo "Error: " . $strSQL;
}
}

archdata.sql:
SET @path = 'C:\Data\backups\'   
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
SET @fileName = @path + 'ProdDB _' + @fileDate + '.BAK'
BACKUP DATABASE ProdDB TO DISK=@fileName WITH STATS = 1

最佳答案

这是一个对我有用的解决方案:

  • 执行 sqlsrv_configure("WarningsReturnAsErrors", 0);更改错误处理的设置。
  • 删除 WITH STATS = 1来自 BACKUP DATABASE陈述。

  • 我可以通过使用 Apache 2.4、PHP 7.1.12 和 Microsoft PHP Driver for 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 DISK=@fileName

    不要忘记为“D:\Backup”文件夹赋予必要的权限。

    关于php调用sqlserver备份数据库脚本,备份文件创建后删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48760895/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com