如何说服 sql 服务器 2008r2 使用 clr v4.0 而不是 v2.0?

How to convince sql server 2008r2 to use clr v4.0 instead of v2.0?

我有 sql 服务器 2008r2。根据我的互联网研究,它支持 .net framework 4.0。我尝试使用 sql clr 函数安装我的程序集并收到错误。

CREATE ASSEMBLY for assembly 'MyAssembly' failed because the assembly is built for an unsupported version of the Common Language Runtime.

查询

select * from sys.dm_clr_properties

给出结果:

directory C:\Windows\Microsoft.NET\Framework64\v2.0.50727\

version v2.0.50727

CLR is initialized

我检查 C:\Windows\Microsoft.NET\Framework64\ 以确保找到 v4.0.30319 文件夹。因此,安装了 .net v4.0。

所以,我需要更改用于 sql 的 CLR 版本。我试过了

sp_configure 'clr enabled', 0;
GO
RECONFIGURE;
GO

sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO

没用。我尝试添加内容为

的 sqlservr.exe.config
<configuration>
   <startup>
      <requiredRuntime version="v4.0"/>
   </startup>
</configuration>

到 C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn 文件夹并重新启动 sql 服务器。它也没有帮助。

我知道创建注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\OnlyUseLatestCLR 并将其设置为 1 的选项。它可能会破坏其他解决方案,所以我不敢在生产中使用它。

有什么建议可以说服 sql 服务器使用 clr v4.0?

所以,答案是 - 哪里没有办法做到这一点。

在我的例子中,我将目标框架降低到 3.5 并排除了一些 clr 函数。

你不能。在an article posted by Doug Holland in 2010 it is explained that older versions of SQL Server (up to and including 2008 R2) use the LockClrVersion 调用限制可以加载的.NET 版本为最新的2.0 版本。

要使用 .NET 4.0,您必须使用 SQL Server 2012 及更高版本