Jus*_*ner 9 sql-server sqlclr .net-framework-version
我想为SQL Server创建基于SQLCLR的存储过程.如您所知,我可以针对多个版本的.NET框架构建一个DLL.我找不到一个引用来描述哪个版本的SQL Server支持哪个版本的.NET框架.任何人都可以帮我指出正确的方向吗?
Sol*_*zky 27
需要明确的是,单个版本的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版本和依赖关系的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静态链接到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框架版本.因此,请注意不要将报告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代码的更深入了解,请查看以下文章(以及一般的系列文章),我写道:
SQLCLR第5级的阶梯:开发(在SQL Server中使用.NET)
| 归档时间: |
|
| 查看次数: |
9156 次 |
| 最近记录: |