备份SQL时出现访问被拒绝问题

4
我正在尝试在我的WPF应用程序中使用C#来备份选定的数据库。我认为代码没问题,但是当备份运行时,我会得到这个错误:

enter image description here

自从我收到了那个错误,我尝试通过C#将文件夹权限授予所有人,但我仍然遇到同样的问题。非常感谢任何帮助。先感谢您。
这是我的代码:
                DirectorySecurity sec = Directory.GetAccessControl(backupFolder);

                SecurityIdentifier everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
                sec.AddAccessRule(new FileSystemAccessRule(everyone, FileSystemRights.Modify | FileSystemRights.Synchronize, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
                Directory.SetAccessControl(backupFolder, sec);

                List<string> dbNameList = GetDatabaseList();

                if (dbNameList != null)
                {
                    SqlCommand oCommand = null;
                    SqlConnection oConnection = null;
                    foreach (string dbName in dbNameList)
                    {
                        string command = @"BACKUP DATABASE " + dbName + " TO DISK='" + backupFolder + "'";   
                        oConnection = new SqlConnection(ConnectionString);
                        if (oConnection.State != ConnectionState.Open)
                            oConnection.Open();
                        oCommand = new SqlCommand(command, oConnection);
                        oCommand.ExecuteNonQuery();
                    }

                    oConnection.Close();
                }
2个回答

4

我怀疑“访问被拒绝”有点误导人,这是因为backupFolder是一个目录路径,而不是指向.bak文件的文件路径。

SQL Server试图打开目录进行输出,这将以观察到的方式失败。

您需要传递包含所需.bak输出文件的路径。


非常感谢。这正是问题所在!我在谷歌上搜索了这个错误很久,但没有人提到过这一点。 - JLott

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接