我正在使用以下代码创建CLR存储过程.我正在创建程序集.它显示了以下问题.我的目标框架是4.0.sql server是2008 r2
SQL代码:
create assembly SampleSearch from 'E:\CLR Files\Sample\ElasticSearch.dll'
错误信息:
程序集"ElasticSearch"的CREATE ASSEMBLY失败,因为程序集是为不支持的公共语言运行时版本构建的.
Solomon Rutz.. 22
Microsoft SQL Server不允许混合模式CLR.这意味着,它静态链接到特定版本的CLR(这与.NET Framework不同,大多数人都把它混淆了).SQL Server 2005,2008和2008 R2链接到处理.NET Framework版本2.0,3.0和3.5的CLR 2.0版,而SQL Server 2012和2014链接到处理.NET Framework 4.0,4.5的CLR 4.0版. x,4.6.x等
你可以:
使用较低的框架版本重新编译,但如果您使用的是在.NET Framework 4.0或更高版本中启动的功能,那么这将无效.使用.NET Framework 2.0始终是SQL Server 2005 - 2008 R2最安全的选择.如果您需要将.NET Framework 3.0或3.5用于不在2.0中的功能(而不是在受支持的.NET Framework库列表中),那么您还需要在SQL中注册相应的.NET Framework 3.0/3.5 DLL服务器as UNSAFE
和这样做需要为TRUSTWORTHY
to 设置数据库选项ON
(最好OFF
尽可能保留).
升级到SQL Server 2012,2014或2016.
有关SQL Server中的.NET细微差别(即SQLCLR)主题的更多详细信息,请参阅我在SQL Server Central上编写的以下文章,如果不是整个系列:
SQLCLR的阶梯级别5:开发(在SQL Server中使用.NET)(该站点需要免费注册)
Microsoft SQL Server不允许混合模式CLR.这意味着,它静态链接到特定版本的CLR(这与.NET Framework不同,大多数人都把它混淆了).SQL Server 2005,2008和2008 R2链接到处理.NET Framework版本2.0,3.0和3.5的CLR 2.0版,而SQL Server 2012和2014链接到处理.NET Framework 4.0,4.5的CLR 4.0版. x,4.6.x等
你可以:
使用较低的框架版本重新编译,但如果您使用的是在.NET Framework 4.0或更高版本中启动的功能,那么这将无效.使用.NET Framework 2.0始终是SQL Server 2005 - 2008 R2最安全的选择.如果您需要将.NET Framework 3.0或3.5用于不在2.0中的功能(而不是在受支持的.NET Framework库列表中),那么您还需要在SQL中注册相应的.NET Framework 3.0/3.5 DLL服务器as UNSAFE
和这样做需要为TRUSTWORTHY
to 设置数据库选项ON
(最好OFF
尽可能保留).
升级到SQL Server 2012,2014或2016.
有关SQL Server中的.NET细微差别(即SQLCLR)主题的更多详细信息,请参阅我在SQL Server Central上编写的以下文章,如果不是整个系列:
SQLCLR的阶梯级别5:开发(在SQL Server中使用.NET)(该站点需要免费注册)