我有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?
答案 0 :(得分:5)
你做不到。在Doug Holland于2010年发布的an article中,解释了旧版本的SQL Server(包括2008 R2)使用LockClrVersion调用来限制可以加载到最新版本的.NET版本2.0版。
要使用.NET 4.0,您必须使用SQL Server 2012及更高版本