1

Windows アプリケーション フォームのボタンをクリックして、データベースをバックアップする必要があります。C# の Visual Studio 2012 で開発しています。

Windows のサイトでは、Transact SQL を使用してバックアップする方法を学びました。Visual Studio の Transact SQL エディターから試してみました。

私が使用したSQLトランザクションは次のとおりです。

USE TestDB;
GO
BACKUP DATABASE TestDB
TO DISK = 'E:\aa.Bak'
   WITH FORMAT,
      MEDIANAME = 'Z_SQLServerBackups',
      NAME = 'Full Backup of AdventureWorks2012';
GO

これをC#で実行したい。

また、バックアップ ボタンをクリックするたびに、バックアップ ファイルを作成し、既存のバックアップ ファイルを置き換えたいと考えています。「FORMAT」パラメータはこの目的を果たしますか?
パラメータTO DISK(バックアップファイルの作成場所)を外付けハードディスクやペンドライブに設定することはできますか?

次のようにデータベースを復元できます。

private void button4_restore(object sender, EventArgs e)<br/>
        {
            con.Open();<br/>
            string str = "USE master;";<br/>
            string str1= "ALTER DATABASE TestDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;";    
            string str3="RESTORE DATABASE TestDB FROM DISK = 'E:\\aa.Bak' ";<br/>
            SqlCommand cmd = new SqlCommand(str, con);<br/>
            SqlCommand cmd1 = new SqlCommand(str1, con);<br/>
            SqlCommand cmd3 = new SqlCommand(str3, con);<br/>
            cmd.ExecuteNonQuery();<br/>
            cmd1.ExecuteNonQuery();<br/>
            cmd3.ExecuteNonQuery();<br/>
            MessageBox.Show("RECOVERED");<br/>
            con.Close();   
        }

このように復元すると、データベースは完全にバックアップ ファイルに復元されます。.Bak ファイルのデータを現在のデータベースの既存のデータに追加する方法はありますか。

4

1 に答える 1

2

次のコードは、ボタン「button_backup」がクリックされた場合に、データベース「TestDB」をファイル「E.\backupfile.Bak」にバックアップします。

private void button_backup_Click(object sender, EventArgs e)
        {
            //con is the connection string
            con.Open();
            string str = "USE TestDB;";
            string str1="BACKUP DATABASE TestDB TO DISK = 'E:\\backupfile.Bak' WITH FORMAT,MEDIANAME = 'Z_SQLServerBackups',NAME = 'Full Backup of Testdb';";
            SqlCommand cmd1 = new SqlCommand(str, con);
            SqlCommand cmd2 = new SqlCommand(str1, con);
            cmd1.ExecuteNonQuery();
            cmd2.ExecuteNonQuery();
            MessageBox.Show("success");
            con.Close();
        }
于 2013-07-05T08:34:55.893 に答える