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 回答