Wil*_*llG 8 sql-server permissions sql-clr files sql-server-2016
我认为这是一个权限问题,但我无法找到它。
我在一台服务器(SQL Server 2016)上有一组 CLR,它们可以正常工作。所有这些都被标记为 UNSAFE,并且它们执行各种类型的文件 I/O(读取、写入、复制、移动、重命名等)。我可以通过 SSMS 或同样轻松地从工作中运行它们。
我需要将它们安装在另一台服务器(也是 SQL Server 2016)上。使用原始的 Visual Studio 项目,我已将它们部署到新服务器。它们出现在 SSMS 中。那部分看起来不错。
当我从 SSMS 尝试运行一个时,我收到以下错误:“拒绝访问路径‘我传入的任何路径’。”
我在 Windows 登录下登录到 SSMS。我有数据库的权限,我是 dbo。我是服务器管理员。我在文件系统中有权限。
我还能缺少什么?
Sol*_*zky 12
我有数据库的权限,我是 dbo。我是服务器管理员。我在文件系统中有权限。
通常,这些都不重要。除非您(或编写 SQLCLR 方法的人)实现了 Impersonation,否则用于外部操作的安全上下文是运行 SQL Server 的服务帐户的安全上下文(类似于xp_cmdshell
行为)。正是该帐户需要您尝试访问的路径的权限。
为了文件访问权限的完整性:
请记住,“拒绝”优先于“授予”(就像 SQL Server 权限一样)。
为了确定用于外部访问的帐户是否确实对文件夹和/或文件具有必要的权限:
NT Service\MSSQLSERVER
)您尝试访问的路径中是否有任何拒绝权限?
另外如果所有代码都在做文件系统的事情,那么很可能你不需要将程序集标记为UNSAFE
,而应该是EXTERNAL_ACCESS
. 不需要太多的文件系统操作UNSAFE
。其中之一是获取固定驱动器列表,但不确定还有什么。
归档时间: |
|
查看次数: |
5443 次 |
最近记录: |