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

时间:2015-06-17 13:04:08

标签: .net sql-server sql-server-2008-r2 sqlclr

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

  

为装配' MyAssembly'创建装配。失败,因为集会   是为不支持的公共语言运行时版本而构建的。

查询

select * from sys.dm_clr_properties

给出结果:

  

目录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

没有帮助。我尝试添加内容

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

到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函数。

1 个答案:

答案 0 :(得分:5)

你做不到。在Doug Holland于2010年发布的an article中,解释了旧版本的SQL Server(包括2008 R2)使用LockClrVersion调用来限制可以加载到最新版本的.NET版本2.0版。

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