在T-SQL中经过Windows身份验证的用户需要什么访问权限才能创建External_Access或不安全程序集?

lds

我正在尝试使用Sqlclr和C#从存储过程中调用.Net代码(dll)进行POC。我正在尝试写EventLogs。我能够创建一个安全的程序集,然后围绕我的dll创建一个存储过程包装器。但是在执行代码时却失败了-对于事件日志的访问,需要使用“外部访问/不安全”权限集来创建程序集。

当我在外部装配体上尝试相同的方法时,它不起作用。因此,我采用了从已签名的dll创建登录名的方法。

  • 我使用Visual Studio签署了dll。在项目属性签名选项卡下,我没有密码(snk文件)对其进行了签名。

  • 然后,我使用dll在sql中创建了一个非对称密钥。

  • 使用此非对称密钥,我在Master中创建了一个Login。
  • 然后,我授予了此登录外部访问程序集。
  • 更改数据库以使用我尝试在其中创建包装程序的特定数据库
  • 在下一步中,我尝试创建具有External_Access权限集的程序集。
  • 失败并显示错误消息-

消息300-拒绝对象“服务器”,数据库“主”上的外部访问程序集权限

  • 然后,我尝试通过将Database Trustworthy设置为ON的方法,只是检查该概念是否确实有效。
  • 由于相同的例外,此操作失败。

我的问题是我的Windows身份验证登录是否需要具有更多权限才能设置External_Access权限。是否需要SA帐户?

尼尔斯·伯格隆德

首先,您是否要在主服务器上运行此程序(根据错误消息)?

要使用TRUSTWORTHY,用户需要按照此处的sysadmin进行操作,但是使用它通常不是一个好主意TRUSTWORTHY

要使用EXTERNAL_ACCESS登录名创建程序集,需要在服务器上具有EXTERNAL ACCESS ASSEMBLY权限。要创建UNSAFE登录名的程序集,需要服务器上的UNSAFE ASSEMBLY权限。你可以在这里阅读更多有关它的内容

尼尔斯

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章