C# 数据库备份错误

C# 数据库备份错误,c#,winforms,visual-studio-2010,sql-server-2008,C#,Winforms,Visual Studio 2010,Sql Server 2008,我有一个创建数据库备份的代码段: try { string connStr = "<valid connection string>"; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); string sqlStmt = String.Format("BACKUP DATABASE InventoryDB TO DISK='{0}'",

我有一个创建数据库备份的代码段:

try
{
  string connStr = "<valid connection string>";

  using (SqlConnection conn = new SqlConnection(connStr))
  {
    conn.Open();

    string sqlStmt = String.Format("BACKUP DATABASE InventoryDB TO DISK='{0}'", 
                                      DBBackupSaveFileDialog.FileName);

    using (SqlCommand bu2 = new SqlCommand(sqlStmt, conn))
    {
      bu2.ExecuteNonQuery();
    }
...
试试看
{
字符串connStr=“”;
使用(SqlConnection conn=newsqlconnection(connStr))
{
conn.Open();
string sqlStmt=string.Format(“将数据库InventoryDB备份到磁盘='{0}'”,
DBBackupSaveFileDialog.FileName);
使用(SqlCommand bu2=newsqlcommand(sqlStmt,conn))
{
bu2.ExecuteNonQuery();
}
...
问题是,它在开发者pc上运行良好,但当我在不同的机器上尝试时,它会给出这个错误

无法打开备份设备“C:\User\Saleh\Documents\12.bak”。操作系统错误5(无法重新查看此错误的文本。原因:15105)


您需要确保SQL Server服务帐户对
C:\Users\Saleh\

首先,查看SQL Server运行的帐户。控制面板>管理工具>服务,右键单击相关SQL Server服务,点击属性,然后查看登录选项卡上列出的帐户。现在转到Windows资源管理器,右键单击文件夹,点击属性,然后在安全选项卡上,可以将此用户帐户添加到列表中,然后确保他们具有写访问权限。如果您在这方面有进一步的问题,您的问题可能应该提交给superuser.com,因为这将成为Windows/权限问题,而不是编程问题


更好的是,停止运行对用户文件夹的备份-使用SQL Server的备份文件夹,SQL Server已经有写入权限。如果以后需要移动它,请单独执行。

将备份路径更改为什么?SQL Server服务帐户没有写入权限的另一个文件夹?您没有回答我的问题。是否支持sed猜测SQL Server运行的是什么服务帐户,以及您是否已对d:\partition\应用了适当的权限?这只是对不备份到用户文件夹的另一次投票。推理:假设sys admin出现,Saleh已退出其工作。他们看到该帐户仍在计算机上运行,并将其删除,或禁用用户等。您的备份是否仍然有效?其他用户是否必须到Saleh取回备份?有一个标准备份文件夹,如果没有其他原因,那么最好使用它,新的DBA将在那里查找备份。请照顾那些花费时间免费解决您的问题的用户。请通过投票/p鼓励他们OST接受您的代码是开放的,至少在理论上- FielOpenCalk的验证可能会阻止它,但是我也不会冒风险。也可以考虑使用。一天中的免费提示:当消息框有焦点将文本复制到剪贴板时点击CTRL+C——比链接/嵌入图像更容易粘贴文本。@克里斯蒂安。K我添加了相同的建议。到我的编辑::-)