微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

由于.NET兼容性问题,无法发布SQL Server数据库项目

如何解决由于.NET兼容性问题,无法发布SQL Server数据库项目

我处于无法找到解决方法的情况。

我正在尝试在Visual Studio 2015上开发一个sql CLR项目,您可以在其中执行来自sql Server的POST和GET HTTP请求。我能够在控制台应用程序上实现所需的操作,然后决定将其携带到sql Server数据库项目中。有问题的数据库的兼容性级别为2008,这迫使我将项目的目标框架更改为.NET 2.0,否则它将不会发布。但是我使用的引用(例如Npgsql和Newtonsoft JSON)要求项目为.Net 4.6.1,否则它们将无法正常工作。

我尝试手动创建程序集。但是数据库位于192.168.x.x这样的服务器中,我不知道将dll文件放在哪里以创建汇编脚本。

任何帮助或建议将不胜感激。

更新:因此,按照所罗门的建议,我能够找到与.NET 2.0兼容的Npgsql和Newtonsoft.json版本。我能够将Newtonsoft.json作为程序集添加数据库,但是Npgsql无法正常工作。它要求Mono.Security.dll与Npgsql不在同一个文件夹中,并且当您将其添加文件夹时,Mono.Security.dll无法通过验证,可能是因为它是混合程序集。这是它给出的错误消息;

为程序集“ Npgsql”创建组件失败,因为程序集 “ Mono.Security”验证失败。检查是否引用 程序集是最新且受信任的(用于external_access或不安全) 在数据库中执行。 CLR验证程序错误消息(如果有) 遵循此消息

我将尝试通过使用ODBC来找到一种解决方法

解决方法

使用SQL Server 2008,您最多可以完成.NET Framework 3.5版,但不能超过此范围。从SQL Server 2012开始,您可以使用4.x版本的.NET Framework。这没有办法。如果需要使用第三方组装,则需​​要获取.NET Framework 2.0-3.5的预编译版本,或者获取允许您针对其中一个版本进行编译的源代码版本。

就程序集的部署而言,您永远不要从DLL进行部署,因为这是部署脚本的外部依赖关系,它可能会丢失,或者基于谁在执行{{1} }语句。VisualStudio / SSDT 应该生成一个正确的CREATE ASSEMBLY语句,该语句使用CREATE ASSEMBLY ... FROM 0x....文字/(文档中称为十六进制字节),但是如果没有,那么您始终可以使用我编写的一个简单的开源命令行实用工具BinaryFormatter将DLL转换为VARBINARY二进制字符串。

有关一般情况下使用SQLCLR的更多信息,请访问:SQLCLR Info

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。