我试图通过CLR程序集使用Server 2008中的Chilkat加密库。由于Chilkat库是如何组合在一起的(请参阅下面的消息),我不能直接这样做,我需要创建一个引用Chilkat库的包装器类,并且按照Server所需的方式对其进行完全管理。
下面是Chilkat的响应,当我问到如何通过SQL server直接连接他们的库时(简短的版本是你不能)。
Chilkat .NET程序集是一个混合模式程序集,这意味着实现是用C++编写的,并编译成本机代码。外层是一个托管接口。过去,我从其他客户那里了解到,在这种情况下,您可以通过在Visual (完全托管)中创建一个简单的包装器类库来解决这个问题,其中包装程序集引用Chilkat程序集,而SQL Server对象引用包装程序集。考虑到您可能只调用了少数几个Chilkat方法(和属性),编写将调用转发到包装的Chilkat对象并返回结果的几个方法不应该是很多工作。
好的。这就是问题所在。在Visual 2008中创建CLR项目时,我完全无法添加对Chilkat库的任何引用(或任何其他引用)。这里没有,没有浏览选项卡/按钮/链接或其他任何东西来添加一个额外的参考库。它根本不在那里。
在我被迫求助快船或dBase3+之前,请帮助我!
详情: Server 2008,Visual 2008,Chilkat评估库,2011年4月。
发布于 2011-06-13 00:13:51
SQL Server对于它允许加载哪些CLR程序集有点挑剔,Visual阻止您随意添加任何旧的程序集引用。
这是因为您需要通过在数据库的“可编程性”节点下找到的need加载第三方程序集(右键单击Assemblies),或者使用CREATE ASSEMBLY。
这使SQL server有机会检查程序集并进行验证,以确保它具有与SQL集成一起使用的受支持类型。这样做是为了确保程序集不可能杀死SQL服务器或导致稳定性问题。
SQL联机丛书的本节讨论SQL限制:
CLR集成编程模型约束
Chilikat程序集将在PEVerify测试(在EXTERNAL_ACCESS部分中描述)失败,因为混合模式程序集包含非托管函数不是可验证的类型安全代码。
如果尝试安装不可验证的混合模式程序集,则会得到一个错误,如:
为程序集“ChilkatDotNet2”创建程序集失败,因为程序集“ChilkatDotNet2”格式错误或不是纯.NET程序集。不可验证的PE头/本机存根。(Microsoft SQL Server,错误: 6544)
有一个这里的讨论线涵盖了这个主题和一些建议的工作。
https://stackoverflow.com/questions/6325386
复制相似问题