Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to backup database (SQL Server 2008) in C# without using SMO?

I have this code and it is not working but I don't why?

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());
}

and I get this error :

alt text

What is the problem?

like image 320
Saleh Avatar asked Dec 29 '22 20:12

Saleh


2 Answers

You need to assign that SqlConnection object to the SqlCommand - try this code:

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");
       }
    }
}
like image 133
marc_s Avatar answered Dec 31 '22 09:12

marc_s


You never tell your SqlCommand which connection to use (this is what the error message says by the way, did you read it?). Either set the Connection property or use SqlConnection.CreateCommand to create the command in the first place.

like image 22
Matti Virkkunen Avatar answered Dec 31 '22 10:12

Matti Virkkunen