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

IAf*_*sov 7 .net sql-server sqlclr sql-server-2008-r2

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

程序集"MyAssembly"的CREATE ASSEMBLY失败,因为程序集是为不支持的公共语言运行时版本构建的.

询问

select * from sys.dm_clr_properties
Run Code Online (Sandbox Code Playgroud)

给出结果:

目录C:\ Windows\Microsoft.NET\Framework64\v2.0.50727\

版本v2.0.50727

CLR已初始化

我检查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
Run Code Online (Sandbox Code Playgroud)

它没有帮助.我尝试添加带有内容的sqlservr.exe.config

<configuration>
   <startup>
      <requiredRuntime version="v4.0"/>
   </startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)

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

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

有什么建议如何说服sql server使用clr v4.0?

所以,答案是 - 哪里无法做到.

在我的情况下,我将目标框架降低到3.5并排除了一些clr函数.

Pan*_*vos 5

你不能.在Doug Holland于2010年发表的一篇文章中,解释了旧版本的SQL Server(包括2008 R2)使用LockClrVersion调用来限制可以加载到最新2.0版本的.NET版本.

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