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

プログラムで SQL Server データベースをデタッチして mdf ファイルをコピーする

    通常のバックアップ (sqlcommand で簡単に実行できます) を作成し、ユーザーがボタンをクリックするだけでそのバックアップ ファイルを簡単に復元できる機能を追加してみませんか?

    • SQL コマンドでデータベースをバックアップできます
    • sql-commands を使用してバックアップ ファイルをシェル化して圧縮できます
    • 必要に応じて、バックアップファイルを自動的にシェルアウトしてウェブサーバーに ftp することもできます。

    あなたのデータベースを消費するためにエンドユーザーは何を使用していますか? winform プログラム?その後、ユーザーはボタンをクリックするだけですべてを簡単に実行できます。

    そのためのコード例を次に示します:

    Declare @CustomerID int
    declare @FileName nvarchar(40)
    declare @ZipFileName nvarchar(40)
    declare @ZipComand nvarchar(255)
    
    
    set @CustomerID=20 --Get from database instead in real life application
    SET @FileName='c:\backups\myback'+ cast(@customerID as nvarchar(10))+'.bak'
    SET @ZipFileName='c:\backups\myback'+ cast(@customerID as nvarchar(10))+'.zip'
    
    --Backup database northwind
    backup database northwind to [email protected]
    
    --Zip the file, I got a commanddriven zip.exe from the net somewhere.
    set @ZipComand= 'zip.exe -r '[email protected]+' '[email protected]
    EXEC xp_cmdshell @zipcomand,NO_output
    
    --Execute the batfile that ftp:s the file to the server
    exec xp_cmdshell 'c:\movetoftp.bat',no_output
    
    --Done!
    

    これを含む movetoftp.bat が必要です (ftp-server を自分のものに変更します):
    ftp -s:ftpcommands.txt ftp.myftp.net

    そして、これを含む ftpcommands.txt が必要です (このファイルは、sqlcommands によって適切な zip ファイルを使用して動的に作成することもできますが、自分で作成することもできます):

    ftpusername
    ftppassword
    binary
    prompt n
    mput c:\backups\*.zip
    quit



    1. 5 がある SQL Server の丸めの問題

    2. CodeigniterでOracleストアドプロシージャを呼び出す方法

    3. 配列に空の値が発生した場合に配列にゼロを追加する

    4. MySQLWorkbenchインサート