【发布时间】:2014-09-10 04:24:51
【问题描述】:
我正在尝试在 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 尝试的结果相同。
【问题讨论】:
-
您是否尝试过将 EXTERNAL_ACCESS 与 CREATE ASSEMBLY 一起使用?你能添加产生错误的代码吗?
-
是的,我确实尝试过,但它与我在 UI 中尝试的其他东西基本相同。问题已更新。
-
您可能需要在添加程序集之前
ALTER DATABASE dbname SET TRUSTWORTHY ON;。我刚刚尝试了这个并且得到了一堆 CLR 验证器错误,所以这可能不会让你一路走好。 -
另外,你试图让 SQL Server 处理这个程序集做什么?如果您尝试存储压缩数据,为什么不使用 SQL Server 原生压缩?
-
TRUSTWORTHY ON已经设置好了,所以不是这样。顺便说一句,我需要做一些压缩工作,而不仅仅是使用本机压缩存储压缩数据。
标签: c# .net sql-server ssms sqlclr