簡體   English   中英

C#備份:服務器XXX的備份失敗

[英]C# Backup: Backup Failed for Server XXX

我有此代碼使用C#備份我的數據庫。

但是我收到Backup Failed for Server ADMIN-PC錯誤消息的Backup Failed for Server ADMIN-PC

我可以從SQL Server Management Studio運行“備份”,但是由於某些原因從這里運行時,會出現此錯誤。

我該如何進行這項工作?

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}%";
    }
}

那是所有異常消息嗎? 僅嘗試不帶進度欄的備份工作,並查看引發了什么異常。 沒有全貌,這里的人無法為您提供足夠的幫助。

您只需要使用這種方式進行備份?

這是我備份數據庫的代碼,供您參考。

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命令完成與數據庫的所有未完成的事務,並且說“從數據庫移交以准備進行備份。

並且您需要檢查連接字符串中的角色和權限。

您可以顯示要在SQL Server Management Studio中備份的SQL語法嗎? 和沒有憑據(例如密碼)的連接字符串? 您能更詳細地描述您的問題嗎?

備份工作需要深入了解Sever的工作方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM