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

如何在不使用SMO的情况下用C#备份数据库(SQL Server 2008)?,c#,sql-server,database,backup,C#,Sql Server,Database,Backup,我有这个代码,它不工作,但我不知道为什么 try { saveFileDialog1.Filter = "SQL Server database backup files|*.bak"; saveFileDialog1.Title = "Database Backup"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { SqlCommand bu2 = new SqlCommand();

我有这个代码,它不工作,但我不知道为什么

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());
}
我得到了这个错误:


问题出在哪里?

您从未告诉SqlCommand要使用哪个连接(顺便问一下,这是错误消息所说的,您读过了吗?)。设置
Connection
属性或首先使用创建命令。

您需要将该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");
       }
    }
}

用C#备份Sql Server 2008数据库(100%正确)

using System.Data.SqlClient;
try{
    SqlConnection con = new SqlConnection(cs.conn()); 
    string database = con.Database.ToString(); 
    string datasource = con.DataSource.ToString(); 
    string connection = con.ConnectionString.ToString(); 
    string file_name =data_loaction+database_name;
    --- "D:\\Hotel BackUp\\" + database + day + month + year + hour + minute + second + ms + ".bak";

    con.Close();
    con.Open();                

    string str = "Backup Database  [" + database + "] To Disk =N'" + file_name + "'";// With Format;' + char(13),'') From  Master..Sysdatabases  Where [Name] Not In ('tempdb','master','model','msdb') and databasepropertyex ([Name],'Status') = 'online'";

    SqlCommand cmd1 = new SqlCommand(str, con);
    int s1 = cmd1.ExecuteNonQuery();
    con.Close();               
    if (s1 >= -1)
            MessageBox.Show("Database Backup Sucessfull.", "Hotel Management", MessageBoxButtons.OK, MessageBoxIcon.Information);
    else{
            MessageBox.Show("Database Backup Not Sucessfull.", "Hotel Management", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
}

当我使用你的代码时,我得到了这个错误消息,-问题是什么?那么,你的SQL Server真的有一个目录
C:\Users\Saleh\Documents
???请记住:备份将在SQL Server计算机上完成-它不会备份到您自己的本地PC!这已经有了一个公认的答案,而你的答案似乎没有添加任何内容。千万不要说一段代码是100%正确的!要么错了,要么你会倒霉的。。。