当我尝试将混合模式 C++/CLI 程序集加载到 SQL Server 2012 时出现此错误:
CREATE ASSEMBLY [Test]
AUTHORIZATION [dbo]
from 'H:\test.dll'
WITH PERMISSION_SET = SAFE
最佳答案
SQLCLR 程序集中不允许混合模式程序集;只允许使用纯 MSIL 程序集。这在 备注 部分的 CREATE ASSEMBLY 的 MSDN 文档中有所暗示:
有关更多详细信息,请参阅以下答案(也在 Stack Overflow 上):
SQL Server custom CLR fails with error "Could not load file or assembly or one of its dependencies. The system cannot find the file specified."
特别是指向 Microsoft KB 文章 Support policy for untested .NET Framework assemblies in the SQL Server CLR-hosted environment 的链接,其中说明了此限制。
只允许托管代码的一个可能原因是,允许非托管代码可能会阻止 SQL Server 对 SAFE
和 EXTERNAL_ACCESS
级别实现某些限制(即主机保护属性等),并阻止验证。
虽然将程序集设置为 UNSAFE
解除了大部分限制,但仍然强制执行此限制:
上面的引用取自以下 MSDN 页面: CLR Integration Programming Model Restrictions 。
更多信息见: CLR Hosted Environment 。
关于c# - SQL Server : "CREATE ASSEMBLY for assembly ' Test' failed because assembly 'Test' is malformed or not a pure . NET 程序集。”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36653838/