代码之家  ›  专栏  ›  技术社区  ›  Saleh

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

  •  4
  • Saleh  · 技术社区  · 15 年前

    我有这个代码,但它不起作用,但我没有,为什么?

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

    我得到这个错误:

    alt text http://i39.tinypic.com/2zhh34k.png

    有什么问题?

    3 回复  |  直到 15 年前
        1
  •  5
  •   Ghyath Serhal    13 年前

    您需要将该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");
           }
        }
    }
    
        2
  •  5
  •   Matti Virkkunen    15 年前

    您从不告诉您的sqlcommand要使用哪个连接(这是错误消息所说的,您读过吗?)。或者设置 Connection 财产或用途 SqlConnection.CreateCommand 首先创建命令。

        3
  •  0
  •   Suhaib Janjua    10 年前

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