sql >> データベース >  >> RDS >> Sqlserver

PHPがsqlserverバックアップデータベーススクリプトを呼び出し、バックアップファイルが作成されてから削除されました

    これが私のために働く解決策です:

    • sqlsrv_configure("WarningsReturnAsErrors", 0);を実行します エラー処理の設定を変更します。
    • WITH STATS = 1を削除します BACKUP DATABASEから ステートメント。

    この問題は、Apache 2.4、PHP 7.1.12、およびSQLServer用のMicrosoftPHPドライバー(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. フラスコで自動インクリメントの主キーを作成できません-sqlalchemy

    2. Oracleのsdo_geometryからlatとlongを取得する方法

    3. Oracleテーブルの内容をファイルにエクスポートするにはどうすればよいですか?

    4. SQL Server(T-SQL)でのPATINDEX()関数のしくみ