是否可以将 .NET Framework v.2.0 程序集添加到 SQL Server 2012?

Is it possible to to add .NET Framework v.2.0 Assembly to SQL Server 2012?

我有一个使用 .NET Framework v2.0 的 DLL。我想使用 CREATE ASSEMBLY 将它添加到 SQL Server 2012。但是 SQL Server 2012 使用 .NET Framework v.4.0。 是否可以将 .NET Framework v2.0 程序集添加到 SQL Server 2012?

好吧,这取决于。问题标题和问题文本暗示两个不同的问题。

如果问题是关于 .NET Framework DLL 的:

没有。 SQL Server 2012 和 2014 静态链接到 CLR 4.0 版(意味着 .NET Framework 版本从 4.0 开始至少到 4.5.2,如果不是 4.6 如果已经发布)。因此,无法将属于 CLR 2.0(即框架版本 2.0、3.0 和 3.5)的任何框架 DLL 加载到 SQL Server 2012 或 2014。

但是,所有内容都应该向后兼容,如果您尝试加载 CLR 4.0(即框架版本 4.0、4.5、4.5.1 等),应该 也能正常工作同一框架 DLL 的版本。这不起作用的唯一原因是,如果有问题的 DLL 或其依赖项之一在您使用的版本之后发布的框架更新之一中更改为 mixed-mode DLL。这种情况下的问题是 SQL 服务器仅支持纯 MSIL DLL。

如果问题是关于您创建的 DLL:

同样,只要它不是 mixed-mode DLL,一切都应该向后兼容,应该 工作相同。

如果加载 DLL 错误:

Assembly "{AssemblyName}" was built using version vX.Y.ZZZZ of the .NET Framework. SQL Server currently uses version v4.0.30319

那么你大概可以 re-link 它到 4.0。请参阅我对“Cannot register stdole assembly in SQL Server 2012”的回答以获取执行此操作的示例。


仅供参考,我写了一篇文章详细解释了 CLR/Framework 版本问题:Stairway to SQLCLR Level 5: Development (Using .NET within SQL Server)(需要免费注册)。