温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

vs2017生成sqlserver 2017项目出现程序集引用错误

发布时间:2020-06-11 03:12:41 来源:网络 阅读:1095 作者:51ct37 栏目:编程语言

一、使用vs2017生成sqlserver 2017项目时由于添加的程序集(CLR集成,可以参考后面给出的链接进行理解)

,由于安全权限的配置不正确引发以下的问题:

SQL72014: .Net SqlClient Data Provider: Msg 10343, Level 14, State 1, Line 1

针对带有 SAFE 或 EXTERNAL_ACCESS 选项的程序集“XXX”的 CREATE 或 ALTER ASSEMBLY 失败,

因为 sp_configure 的“clr 严密安全性”选项设置为 1。Microsoft 建议使用其相应登录名具有 UNSAFE ASSEMBLY

权限的证书或非对称密钥为该程序集签名。或者,也可以使用 sp_add_trusted_assembly 信任程序集。

起因—摘抄自MSDN: https://docs.microsoft.com/zh-cn/sql/database-engine/whats-new-in-sql-server-2017?view=sql-server-2017

Sqlserver2017中,CLR 在 .NET Framework 中使用代码访问安全性 (CAS)(不可再作为安全边界)。

使用 PERMISSION_SET = SAFE 创建的 CLR 程序集可以访问外部系统资源、调用非托管代码以及获取 sysadmin 特权。

从 SQL Server 2017 (14.x) 开始,引入了名为 clr strict security 的 sp_configure 选项,以增强 CLR 程序集的安全性。

默认启用 clr strict security,并将 SAFE 和 EXTERNAL_ACCESS 程序集与标记为 UNSAFE 的程序集同等对待。

可禁用 clr strict security 选项以实现后向兼容性,但不建议这样做。 Microsoft 建议所有程序集都通过证书或非对称密钥进行签名,

且该证书或非对称密钥具有已在主数据库中获得 UNSAFE ASSEMBLY 权限的相应登录名。 现在可以将 CLR 程序集添加到白名单,

作为 clr strict security 功能的变通方法。 添加 sp_add_trusted_assembly、sp_drop_trusted_assembly 和 sys.trusted_asssemblies

以支持受信任的程序集白名单。 有关详细信息,请参阅 CLR 严格安全性。

二、解决方式:http://usingprogramming.com/category/Blog

采用 sp_add_trusted_assembly的方式添加信任到数据库里去.

DECLARE @hash AS BINARY(64) = (SELECT HASHBYTES('SHA2_512', (SELECT * FROM OPENROWSET (BULK 'XXX.dll', SINGLE_BLOB) AS [Data])))

EXEC sp_add_trusted_assembly @hash

然后可以通过:

select * from sys.trusted_asssemblies 视图查看已经添加的信任的程序集

至此就解决了. 希望有所帮助.
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI