如何在不使用SMO的情况下在C#中备份数据库(SQL Server 2008)?

Sal*_*leh 4 c# database sql-server backup

我有这个代码,它不工作,但我不是为什么?

try
{
   saveFileDialog1.Filter = "SQL Server database backup files|*.bak";
   saveFileDialog1.Title = "Database Backup";

   if (saveFileDialog1.ShowDialog() == DialogResult.OK)
   {
      SqlCommand bu2 = new SqlCommand();
      SqlConnection s = new SqlConnection("Data Source=M1-PC;Initial Catalog=master;Integrated Security=True;Pooling=False");

      bu2.CommandText = String.Format("BACKUP DATABASE LA TO DISK='{0}'", saveFileDialog1.FileName);

      s.Open();

      bu2.ExecuteNonQuery();
      s.Close();

      MessageBox.Show("ok");
   }
}
catch (Exception ex)
{
   MessageBox.Show(ex.ToString());
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

替代文字http://i39.tinypic.com/2zhh34k.png

问题是什么?

Mat*_*nen 5

你永远不会告诉你的SqlCommand使用哪个连接(这就是错误信息所说的方式,你读过它了吗?).设置Connection属性或使用SqlConnection.CreateCommand首先创建命令.


mar*_*c_s 5

您需要将该SqlConnection对象分配给SqlCommand - 尝试以下代码:

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
    string connStr = "Data Source=M1-PC;Initial Catalog=master;Integrated Security=True;Pooling=False";

    using(SqlConnection conn = new SqlConnection(connStr))
    {
       string sqlStmt = String.Format("BACKUP DATABASE LA TO DISK='{0}'", saveFileDialog1.FileName);

       using(SqlCommand bu2 = new SqlCommand(sqlStmt, conn))
       {
           conn.Open();
           bu2.ExecuteNonQuery();
           conn.Close();

           MessageBox.Show("ok");
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 那你的SQL Server真的有一个目录`C:\ Users\Saleh\Documents` ??? 请记住:备份将在SQL Server计算机上完成**** - 它不会**到您自己的本地PC! (2认同)