c# – 无法将System.IO.Compression添加到SQL Server中的受信任程序集
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 无法将System.IO.Compression添加到SQL Server中的受信任程序集,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1628字,纯文字阅读大概需要3分钟。
内容图文
![c# – 无法将System.IO.Compression添加到SQL Server中的受信任程序集](/upload/InfoBanner/zyjiaocheng/909/b9687b8bdb894431bc8d6198b425b602.jpg)
我试图在NET 4.5中创建一个SQLCLR存储过程,摆弄ZIP文件.显然System.IO.Compression不在SQL Server的批准列表上,但这是我尝试通过SQL Server Management Studio手动添加它时得到的.如果我尝试通过查询执行CREATE ASSEMBLY,也会发生同样的情况.有任何想法吗?为什么这是禁忌?
我也尝试在SSMS中运行此命令:
CREATE ASSEMBLY SystemIOCOMPRESSION
FROM 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.IO.Compression.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS
…结果与我通过SSMS UI尝试的结果相同.
解决方法:
您正在尝试导入错误的DLL.这是“引用”DLL,而不是实际的“框架”DLL.以下将工作,因为我不仅尝试使用SQL Server 2012,但我还能够导入System.IO.Compression.FileSystem并执行System.IO.Compression.ZipFile.CreateFromDirectory():
>这是必需的,因为您无法从.Net Framework DLL创建ASYMMETRIC KEY:
ALTER DATABASE [{dbname}] SET TRUSTWORTHY ON;
>至少你需要这个:
CREATE ASSEMBLY [System.IO.Compression]
FROM N'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.IO.Compression.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS;
>如果你想使用ZipFile或ZipFileExtensions类,你将需要这个(不幸的是,这个需要设置为UNSAFE):
CREATE ASSEMBLY [System.IO.Compression.FileSystem]
FROM N'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.IO.Compression.FileSystem.dll'
WITH PERMISSION_SET = UNSAFE;
>为了防止它不明显,调用上述程序集中的方法的程序集也需要具有EXTERNAL_ACCESS的PERMISSION_SET.
>对于任何可能没有意识到这一点的人来说,要完全清楚:
> Zip *类以及System.IO.Compression和System.IO.Compression.FileSystem程序集是.Net 4.5的新增功能
>您只能在SQL Server 2012和2014(当前版本)中使用.Net 4.0 / 4.5的新项目; SQL Server 2005/2008 / 2008 R2停留在.Net 2.0系列上.
内容总结
以上是互联网集市为您收集整理的c# – 无法将System.IO.Compression添加到SQL Server中的受信任程序集全部内容,希望文章能够帮你解决c# – 无法将System.IO.Compression添加到SQL Server中的受信任程序集所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。