删除在 SQL 服务器中创建的文件夹时访问被拒绝

Access denied when deleting folders created in SQL Server

我正在使用 xp_cmdshell 创建目录,但由于权限原因我无法删除它们,我什至无法看到文件夹的所有者。 我必须进入安全模式才能删除文件夹。 我正在使用 SQL Server 2008。

我假设这是一个 ACL 问题。

使用 xp_cmdshell 创建的目录归 SQL 服务器(服务帐户)所有,其访问权限继承自父级。

如果您必须在创建目录后修改目录的内容,则必须:

  • 在另一个已经拥有 good 访问权限的目录中创建您的目录。
  • 或在其创建后授予更多权限(使用 xp_cmdshellicacls 来操作 ACL)

例如,将以下代码段中的 domain\group & d:\folder_path 更改为适合您的任何内容,以授予组(您的用户、管理员等...)对目录的完全控制权:

exec xp_cmdshell 'icacls "d:\folder_path" /grant "domain\group":(f)'

危险,威尔·罗宾逊,危险!

从几个角度来看,这听起来可能并不理想 - 安全性、面向未来和可扩展性。假设其中 none 是您代码的优先级,请继续使用 Edgard 的回答。

否则,我会质疑任何具有 DBMS(直接)在文件系统中写入文件夹的设计。我不怀疑你有你的理由,只是有一些非常大但非常不明显的风险不会咬你,直到你已经致力于课程。无论您在做什么,都可能有风险更小、更直接的方法。