使用 C# 代码备份失败

Posted

技术标签:

【中文标题】使用 C# 代码备份失败【英文标题】:Backup failed using C# Code 【发布时间】:2014-09-07 19:28:37 【问题描述】:

我的问题是我无法使用 C# 代码在 wpf 中备份我的数据库。错误是“服务器 'DELL/LOCALSERVER' 的备份失败”。我使用的代码是这样的:

private void btnBackup_Click(object sender, RoutedEventArgs e)


  if (!string.IsNullOrEmpty(txtPath.Text) && !string.IsNullOrWhiteSpace(txtPath.Text)
    && !string.IsNullOrEmpty(txtFileName.Text) && !string.IsNullOrWhiteSpace(txtFileName.Text))
  
    BackupFilePath = txtPath.Text + "" + txtFileName.Text + ".bak";
    Server sqlServerInstance = new Server(new Microsoft.SqlServer.Management.Common.ServerConnection
      (new System.Data.SqlClient.SqlConnection(h2prdb.ConnectionString)));
    Backup objBackup = new Backup();
    objBackup.Database = "H2RPDB";
    objBackup.Action = BackupActionType.Database;
    objBackup.Devices.AddDevice(@BackupFilePath, DeviceType.File);
    objBackup.SqlBackup(sqlServerInstance);
    System.Windows.Forms.MessageBox.Show("The backup of database " + "'H2RPDB'" + " completed sccessfully", "Microsoft SQL Server Management Studio", MessageBoxButtons.OK, MessageBoxIcon.Information);
  
  else
  
    System.Windows.Forms.MessageBox.Show("Please fill-up all fields!",
      "Backup/Restore", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  

我不知道对这段代码不熟悉有什么问题。感谢您的回答。

【问题讨论】:

【参考方案1】:

你可以使用下面提到的代码

            ServerConnection con = new ServerConnection(@"ServerName");
            Server server = new Server(con);
            Backup source = new Backup();
            source.Action = BackupActionType.Database;
            source.Database = "DBName";
            BackupDeviceItem destination = new BackupDeviceItem(@"C:\tmp\temp.bak", DeviceType.File);
            source.Devices.Add(destination);
            source.SqlBackup(server);
            con.Disconnect();

确保您以管理员身份打开了 Visual Studio。 并且您必须包含下面提到的参考以运行上述代码

Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.Management.Sdk.Sfc.dll
Microsoft.SqlServer.Smo.dll
Microsoft.SqlServer.SmoExtended.dll

您可以在C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies 上找到所有上述 DLL

【讨论】:

谢谢!当我使用 C:\Temp 作为路径时,它正在工作。但是如果我使用另一个路径,例如桌面中的文件夹,它仍然显示备份失败 这是权限问题

以上是关于使用 C# 代码备份失败的主要内容,如果未能解决你的问题,请参考以下文章

使用 Windows 的防病毒软件或备份程序偶尔写入文件失败

C# 微信企业付款给个人

代码备份使用Application变量实现同账号同IP登录次数限制

在 C# 中使用 ADSI 进行 LDAP 绑定错误代码

你如何在 C# 中备份 IIS 的元数据库?

LogonUser 函数在 c# 中失败,错误代码为 0