【问题标题】:Access Denied when doing SQL Backup执行 SQL 备份时拒绝访问
【发布时间】:2015-02-08 19:07:47
【问题描述】:

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

自从收到该错误后,我尝试通过 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();
                }

【问题讨论】:

    标签: c# sql security permissions database-backups


    【解决方案1】:

    我怀疑 Access Denied 有点误导,是由于以下事实引起的 backupFolder 是目录路径,而不是指向 .bak 文件的文件路径。

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

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

    【讨论】:

    • 非常感谢。这正是问题所在!我一直用谷歌搜索这个错误,没有人提到这个。
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 2022-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多