SQL Server支持哪种版本的.NET框架?

问题描述 投票:8回答:1

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

sql-server sqlclr .net-framework-version
1个回答
25
投票

需要明确的是,单个版本的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,3.0和3.5,这意味着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和2019静态链接到CLR版本4,它适用于.NET Framework版本4.0,4.5 [.x],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)

有关使用SQLCLR的更多信息,请访问:SQLCLR Info

© www.soinside.com 2019 - 2024. All rights reserved.