【问题标题】:Check folder and files permission via T-SQL通过 T-SQL 检查文件夹和文件的权限
【发布时间】:2017-06-01 07:50:58
【问题描述】:

我想检查 T-SQL 中的所有文件和文件夹权限。

例如:

  • 文件夹名称:Root

  • 根目录中的项目是File1, file2, folder1

我想要在 T-SQL 中拥有这些文件和文件夹权限的用户列表。

【问题讨论】:

  • SQL Server 是一个数据库服务器 - 不是一个文件系统前端......这完全是错误的地方做这样的事情

标签: sql sql-server tsql permissions


【解决方案1】:

回答您的问题;是的,它可以;但是,这需要您打开非常糟糕的权限,我不会告诉您如何操作。

如果您绝对必须这样做,那么使用 .Net 创建一个外部访问程序集并调用这就是您的答案。如果您穿过这条路,请不要走“值得信赖”的路线并绕过安检。创建一个非对称密钥和一个用户并相应地签署您的代码。

【讨论】:

    【解决方案2】:

    虽然不推荐,但您可以使用xp_cmdshell 从 SSMS (SQL Server Management Studio) 中查询底层操作系统/文件系统。

    如果您需要检查是否可以从 SSMS 中访问文件夹/UCN 路径,请在其中放置一个小型数据库备份文件 (.bak),然后使用 FILELISTONLY 还原来简单地读取它,例如:

    RESTORE FILELISTONLY FROM DISK = '\\folder_to_check\db.bak'   --this will only read the file (without performing the Restore operation.
    

    如果上面成功地从您的 <folder_to_check> 文件夹中读取 .bak 文件 - 这意味着有问题的文件夹是可访问的(通过 T-SQL/从 SSMS 中)。

    如果没有,请授予执行 SQL 实例的服务帐户的访问权限(例如对该文件夹的读/写访问权限),该服务帐户通常是本地系统帐户或 AD 服务帐户。

    要获取此服务帐户的名称,请在“Windows 服务”(services.msc) 或“SQL Server 配置管理器”(@987654325) 中查看 SQL Server 服务的属性 @) 或者您可以运行以下查询:

    select * from sys.dm_server_services  --This will list the Accounts-Names that execute SQL Server Instance/engine service & SQL Agent service, and Full-Text Search services etc.
    

    HTH。

    【讨论】:

      猜你喜欢
      • 2013-02-07
      • 2011-08-20
      • 2010-10-28
      • 1970-01-01
      • 2011-06-13
      • 2012-01-06
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      相关资源
      最近更新 更多