【发布时间】:2018-01-11 10:03:41
【问题描述】:
我正在尝试使用 Sqlclr 和 C# 进行 POC,以从存储过程中调用 .Net 代码 (dll)。我正在尝试写入事件日志。我能够创建一个安全程序集,然后在我的 dll 周围创建一个存储过程包装器。但是在执行代码时它失败了 - 对于事件日志访问,需要使用 External_Access/ Unsafe 权限集创建程序集。
当我尝试使用外部组件进行相同操作时,它不起作用。所以我选择了从签名的 dll 创建登录的路线。
我使用 Visual Studio 对 dll 进行了签名。在项目属性签名选项卡下,我在没有密码(snk 文件)的情况下对其进行了签名。
然后我使用 dll 在 sql 中创建了一个非对称密钥。
- 使用这个非对称密钥,我在 Master 中创建了一个登录。
- 然后我授予此登录外部访问程序集。
- 已更改数据库以使用我尝试在其中创建包装程序的特定数据库
- 在下一步中,我尝试使用 External_Access 创建程序集 权限集。
- 失败并显示错误消息 -
消息 300 - 对象“服务器”、数据库“主服务器”上的外部访问程序集权限被拒绝
- 然后我尝试通过设置数据库可信赖的路线 到 ON 只是为了检查这个概念是否真的有效。
- 这失败了,同样的异常。
我的问题是我的 Windows 身份验证登录是否需要更多权限才能设置 External_Access 权限。是否需要 SA 帐户?
【问题讨论】:
标签: sqlclr