在 SQL Server CLR 程序集中使用 Microsoft Solver Foundation

Posted

技术标签:

【中文标题】在 SQL Server CLR 程序集中使用 Microsoft Solver Foundation【英文标题】:Using Microsoft Solver Foundation in SQL Server CLR Assembly 【发布时间】:2015-08-10 20:54:31 【问题描述】:

我目前正在编写自己的 CLR 存储过程,我需要使用 Microsoft Solver Foundation 的求解器。

为了能够在我的 CLR 项目中添加对 Microsft Solver Foundation 的引用,我需要将该程序集添加到我的 SQL Server 实例 (source)。所以我installed MS Solver Foundation Redistributable 并使用以下脚本作为服务器管理员在 SQL Server 中注册了它:

USE MYDB

ALTER DATABASE MYDB SET TRUSTWORTHY ON WITH ROLLBACK IMMEDIATE

ALTER DATABASE MYDB SET TRUSTWORTHY ON

CREATE ASSEMBLY MicrosoftSolverFoundation
AUTHORIZATION dbo
FROM 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Microsoft.Solver.Foundation.dll' 
WITH PERMISSION_SET = UNSAFE

但是,我收到以下错误:

Assembly 'MicrosoftSolverFoundation' could not be installed because existing policy would keep it from being used.

附加信息

CLR 版本:

directory   C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
version v4.0.30319
state   CLR is initialized

SQL Server 版本:

Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
Dec 28 2012 20:23:12 
Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

【问题讨论】:

【参考方案1】:

这篇 MSDN 帖子似乎在谈论同样的事情,并建议使用 mscorcfg.msc 工具查看运行时安全策略。

它还提到了Fusion Log Viewer,以查看在您尝试创建程序集时是否记录了任何内容。

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/6546340a-2cf7-4308-88d0-c403cebdb66b/create-assembly-error-could-not-be-installed

【讨论】:

以上是关于在 SQL Server CLR 程序集中使用 Microsoft Solver Foundation的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 的 clr 存储过程中执行动态 .net 代码

SQL CLR 在 SQL Server 中随机失败

使用 SQL-CLR 函数在 SQL Server 中验证加密数据的安全性

SQL Server 2017 上的 CLR 严格安全性

CLR SQL Server UDF 问题

SQL Server通过外部程序集注册正则表达式函数(CLR函数)