通过T-SQL检查文件夹和文件权限

时间:2017-06-01 07:50:58

标签: sql sql-server tsql permissions

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

例如:

  • 文件夹名称:Root

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

如果您需要检查文件夹/UCN 路径是否可以从 SSMS 中访问,请在那里放置一个小的数据库备份文件 (.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 服务帐户)的访问权限(例如对该文件夹的 READ/WRITE 访问权限)。

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

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。