SQLCLR使用了错误版本的.NET Framework
在最近重新启动我们的开发服务器期间,SQLCLR使用了错误版本的.NET Framework,.net,sql-server,sqlclr,sql-server-2008-r2,.net,Sql Server,Sqlclr,Sql Server 2008 R2,在最近重新启动我们的开发服务器期间,SQL server开始对SQLCLR使用.NET 4.0。这意味着在SQL中使用CLR不会起任何作用,或者至少我通过阅读以下来源了解到这一点: 我们得到的只是这种类型的错误消息: Msg 6517,级别16,状态1,第1行无法创建AppDomain “xxx.dbo[ddl].3”。方法的类型签名不兼容互操作 运行声明(由@john christensen建议) 结果显示以下信息: *Name* *Value* directory C:\W
SQL server
开始对SQLCLR使用.NET 4.0
。这意味着在SQL中使用CLR不会起任何作用,或者至少我通过阅读以下来源了解到这一点:
我们得到的只是这种类型的错误消息:
Msg 6517,级别16,状态1,第1行无法创建AppDomain
“xxx.dbo[ddl].3”。方法的类型签名不兼容互操作
运行声明(由@john christensen建议)
结果显示以下信息:
*Name* *Value*
directory C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
version v4.0.30319
state CLR is initialized
有没有人知道如何解决这个问题,或者我们如何强制SQL Server CLR使用早期版本的框架?他们做出了明确的选择,以确保.NET 4.0的安装不会产生影响。它不应该使用.NET 4.0或任何新文件,除了新的垫片文件mscoree.dll和mscoreei.dll。这些应该与2.0运行时向后兼容。您可以运行Process Explorer查看加载的dll的版本号,以验证它是否运行在正确的运行时。从文章和我在web上的研究来看,情况可能正好相反-您可能正在注册4.0 dll吗?SQL Server 2008似乎总是加载2.0 CLR,而不是4.0 CLR。尝试运行此语句,它将告诉您SQL server正在运行的版本:
在您在英特尔发布的文章中选择*from sys.dm_clr_properties,如果仔细阅读,它会显示: SQL Server 2008和即将发布的 SQL Server 2008 R2版本,以前版本 代号为“乞力马扎罗”将 继续加载最新的服务 2.0版CLR的发布 后来: 而SQL Server的未来版本 可能会加载较新版本的CLR,或 甚至支持加载多个 进程中的CLR,2.0版 对于SQLCLR,CLR的 在SQL Server 2008和SQL Server中 2008 R2.
我不知道如何在SQL Server 2008 R2中加载类似.NET 4的内容……通常,您可以通过在应用程序的配置文件中指定
supportedRuntime
标记来强制.NET应用程序使用特定的.NET Framework版本
因此,您可以尝试在SQL实例根路径下的
\Binn
文件夹中创建一个sqlservr.exe.config
,并在那里指定只使用3.5以下的.NET版本。检查配置文件的结构。我遇到了同样的恼人问题。我数据库中的地理/几何内容都不起作用。我重新安装了一些失败的SQL server,终于(几周后!)在我的注册表中找到以下项已设置为“1”
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\.NETFramework\ONLYSELATESTCLR
当我将其重置为“0”并重新启动机器时,一切又恢复了正常
Hans我有这个问题一天了,在更新windows和.NET framework之后,问题消失了。这个问题与.NET framework有关。请尝试修复它。当我运行select*from sys.dm_clr_属性时,我得到以下信息:“目录:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\version:v4.0.30319状态:CLR已初始化”,这对我来说表示使用的是v4.0。我还将对该语句的响应添加到了主要问题中。
*Name* *Value*
directory C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
version v4.0.30319
state CLR is initialized