2010-04-10 5 views
4

J'ai ce code et ça ne marche pas mais je ne sais pas pourquoi?Comment faire pour sauvegarder la base de données (SQL Server 2008) en C# sans utiliser SMO?

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

et je reçois cette erreur:

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

Quel est le problème?

Répondre

4

Vous devez affecter cet objet SqlConnection au SqlCommand - essayez ce 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"); 
     } 
    } 
} 
+0

Lorsque j'utilise votre code je reçois cette erreur messege, http://i44.tinypic.com/5mbhxx.png - Quel est le proplem? – Saleh

+2

Eh bien, est-ce que votre SQL Server a vraiment un répertoire 'C: \ Users \ Saleh \ Documents' ??? Rappelez-vous: la sauvegarde sera faite ** sur la machine SQL Server ** - elle ne sera ** PAS ** sur votre propre PC local! –

5

Vous ne dites jamais à votre SqlCommand quelle connexion utiliser (c'est ce que le message d'erreur dit d'ailleurs, l'avez-vous lu?). Définissez la propriété Connection ou utilisez SqlConnection.CreateCommand pour créer la commande en premier lieu.

0

sauvegarde Sql Server base de données 2008 en C# (100% correct)

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); 
    } 
} 
+0

Ceci a déjà une réponse acceptée et la vôtre ne semble rien y ajouter. – JamesT

+0

ne jamais dire qu'un morceau de code est ** 100% correct **! C'est soit faux, soit vous le blesserez ... – tugberk

Questions connexes