gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:17:24 26 4
gpt4 key购买 nike

我想为 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 版本与框架版本关系的图表,请参阅 .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]。
如果它更容易理解,上面提到的图表形式的信息是:

SQL Server version      |   CLR version   |   .NET Framework version(s)
------------------------|-----------------|----------------------------
2005 | 2.0 | 2.0, 3.0 **, and 3.5 **
| | ** To use any functionality within
| | System.Core or System.Xml.Linq
| | libraries, they must be imported
| | manually as UNSAFE.
------------------------|-----------------|----------------------------
2008 and 2008 R2 | 2.0 | 2.0, 3.0, and 3.5
------------------------|-----------------|----------------------------
2012, 2014, 2016, 2017, | 4.0 | 4.0+
and 2019, (and should | |
also be Azure SQL DB | |
Managed Instance) | |
------------------------|-----------------|----------------------------
关于从 System.Environment.Version返回的信息(在 .NET 代码中)和 SELECT [value] FROM sys.dm_clr_properties WHERE [name] = N'version'; ,他们正在报告 CLR 版本,而不是 .NET 框架 版本。因此,请注意不要将报告 2.0 或 4.0 的这两件事混淆,因为这意味着您只能使用 Framework 2.0 或 4.0 版。
幸运的是,由于向后兼容性,针对 CLR 2 框架版本(2.0、3.0 和 3.5)编译的代码将无需在 SQL Server 2012 和更高版本中重新编译即可运行,即使它们是在 CLR 版本 4 上。
因此,使用 2.0 的目标框架版本通常不会出错,但您肯定可以使用 2.0 以上的框架版本。
要更深入地了解开发 SQLCLR 代码,请查看我撰写的以下文章(以及整个系列):
Stairway to SQLCLR Level 5: Development (Using .NET within SQL Server)
有关使用 SQLCLR 的更多信息,请访问: SQLCLR Info

关于sql-server - SQL Server 支持哪个版本的 .NET 框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41114147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com