2017-02-12 7 views
0

Ich habe diesen Code zum Sichern meiner Datenbank mit C#.C# Backup: Sicherung fehlgeschlagen für Server XXX

Aber ich bekomme Fehlermeldung.

Ich kann Backup von SQL Server Management Studio ausführen, aber von hier aus gibt es aus irgendeinem Grund mir diesen Fehler.

Wie kann ich das schaffen?

private void btnBackup_Click(object sender, EventArgs e) 
    { 
     progressBar1.Value = 0; 

     try 
     { 
      Server dbServer = new Server(new ServerConnection(txtServer.Text, txtUserName.Text, txtPassword.Text)); 
      Backup dbBackup = new Backup() {Action = BackupActionType.Database, Database = txtDatabase.Text}; 
      dbBackup.Devices.AddDevice(@"C:\PDM.bak", DeviceType.File); 
      dbBackup.Initialize = true; 
      dbBackup.PercentComplete += DbBackup_PercentComplete; 
      dbBackup.PercentComplete += DbBackup_Complete; 
      dbBackup.SqlBackupAsync(dbServer); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, "Message ", MessageBoxButtons.OK, MessageBoxIcon.Error); 


     } 

    } 
    private void DbBackup_Complete(object sender, ServerMessageEventArgs e) 
    { 
     if (e.Error != null) 
     { 
      label5.Invoke((MethodInvoker)delegate 
      { 
       lblStatus.Text = e.Error.Message; 
      }); 
     } 

    } 
    private void DbBackup_PercentComplete(object sender, PercentCompleteEventArgs e) 
    { 
     progressBar1.Invoke((MethodInvoker)delegate 
     { 
      progressBar1.Value = e.Percent; 
      progressBar1.Update(); 


     }); 
     label5.Text = $"{e.Percent}%"; 
    } 
} 
+1

prüfen, ob die Ausnahme, die Sie mit mehr Details – NineBerry

Antwort

1

Ist das die alle Ausnahme Nachricht? Probieren Sie nur die Backup-Arbeit ohne Fortschrittsbalken und sehen Sie, welche Ausnahme ausgelöst wird. Ohne vollständiges Bild können die Menschen hier nicht genug helfen.

Müssen Sie diesen Weg nur für die Sicherung verwenden?

Dies ist mein Code zu Backup-Datenbank für Ihre Referenz.

using (SqlConnection masterdbConn = new SqlConnection()) 
{ 
    masterdbConn.ConnectionString = localmasterConnectionString; 
    masterdbConn.Open(); 

     using (SqlCommand rollback_dbcomm = new SqlCommand()) 
     { 
      rollback_dbcomm.Connection = masterdbConn; 
      rollback_dbcomm.CommandText = "ALTER DATABASE mydbname SET MULTI_USER WITH ROLLBACK IMMEDIATE"; 

      rollback_dbcomm.ExecuteNonQuery(); 
     } 
     masterdbConn.Close(); 
} 

SqlConnection.ClearAllPools(); 

using (SqlConnection backupConn = new SqlConnection()) 
{ 
    backupConn.ConnectionString = localConnectionString; 
    backupConn.Open(); 

    using (SqlCommand backupcomm = backupConn.CreateCommand()) 
    { 
      backupcomm.CommandText = @"BACKUP DATABASE mydbname TO DISK='c:\mydbname.bak'"; 

      backupcomm.ExecuteNonQuery(); 
    } 
    backupConn.Close(); 
} 

Alter DATABASE ROLL BACK IMMEDIATE Befehl beendet alle unvollendeten Transaktionen mit der Datenbank und lassen Sie uns aus der Datenbank ‚Hände sagen off for Backup bereit zu sein.

Und Sie müssen Rollen und Berechtigungen in der Connectionstring überprüfen ..

zeigen Sie die SQL-Syntax zur Unterstützung in SQL Server Management Studio? und die Verbindungszeichenfolge ohne die Anmeldeinformationen (wie Passwort)? Und können Sie Ihr Problem genauer beschreiben?

Backup-Arbeit muss tiefes Verständnis, wie Sever funktioniert ..

+0

hat eine innere Ausnahme erhalten, den Dank funktioniert! aber wie kann ich den Fortschrittsbalken zum arbeiten bringen? – KAKA

+0

Das ist gut. Ich habe versucht, mit SMO wie du um diese Zeit wieder zu versuchen. Und ich habe festgestellt, dass ich diesen SMO-Weg schon vor Jahren ausprobiert habe, aber aufgrund von DLL-Problemen aufgegeben habe (gescheitert) und auf den Weg meiner obigen Antwort gewechselt habe. Hat das Backup lange gedauert? Wie groß ist die Datenbankgröße? Wenn es nicht lange dauert und es ist keine große Datenbank, nur unbestimmter Fortschritt Bar wäre genug und Sie können viele Fortschritte findenBar-Lösung durch Nuget oder Github. –

+0

nein, es ist sehr schnell, die Datenbankgröße sehr klein und ich möchte aktuelle Daten und Zeit in der Backup-Datei Name hinzufügen – KAKA

Verwandte Themen