我想检查T-SQL中的所有文件和文件夹权限。
例如:
文件夹名称:Root
根目录中的项目为File1, file2, folder1
我想要在T-SQL中拥有这些文件和文件夹权限的用户列表。
答案 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。