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

sql-server – SQL Server支持哪种版本的.NET框架?

我想为sql Server创建基于sqlCLR的存储过程.如您所知,我可以针对多个版本的.NET框架构建一个DLL.我找不到描述哪个版本的sql Server支持哪个版本的.NET框架的参考.任何人都可以帮我指出正确的方向吗?

解决方法

需要明确的是,单个版本的CLR通常具有与其一起使用的多个.NET Framework版本.但是,单个版本的.NET Framework仅适用于CLR的一个特定版本.例如,CLR 2.0版适用于.NET Framework版本2.0,3.0和3.5,而CLR 4.0版适用于.NET Framework的所有4.x版本(即4.0,4.5 [.x],4.6 [. x],4.7 [.x]等).要查看CLR版本与Framework版本关系的图表,请参阅 .NET Framework Versions and Dependencies的MSDN页面.

关于sqlCLR代码,sql Server仅适用于单个版本的CLR,特定版本取决于sql Server的版本. sql Server 2005,2008和2008 R2仅适用于CLR版本2.由于CLR版本2仅适用于.NET Framework版本2.0,这意味着sql Server 2005,2008和2008 R2仅适用于. NET Framework版本2.0,3.0和3.5.

当然,sql Server 2005的CLR集成功能(它的初始版本)是围绕.NET Framework 2.0版构建的(因为那是当时可用的),因此.NET Framework 3.0版中有几个较新的库和3.5在没有手动导入它们的情况下在sql Server 2005中不起作用(即System.Core和System.Xml.Linq).同样,sql Server 2012,2014,2016和2017静态链接到CLR版本4,它适用于.NET Framework版本4.0,4.6 [.x]和4.7 [.x] .

关于从System.Environment.Version(在.NET代码中)和SELECT [version] FROM sys.dm_clr_properties;返回的信息,它们报告的是CLR版本,而不是.NET Framework版本.因此,请注意不要将报告2.0或4.0的两件事混淆为意味着您只能使用Framework 2.0或4.0版.

幸运的是,由于向后兼容性,针对CLR 2 Framework版本(2.0,3.0和3.5)编译的代码将运行而无需在sql Server 2012及更高版本中重新编译,即使它们位于CLR版本4上.

因此,使用Target Framework Version 2.0时通常不会出错,但您肯定可以使用2.0之外的Framework版本.

有关开发sqlCLR代码的更深入了解,请查看以下文章(以及一般的系列文章),我写道:

Stairway to SQLCLR Level 5: Development (Using .NET within SQL Server)

原文地址:https://www.jb51.cc/mssql/79307.html

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

相关推荐