【问题标题】:How to convince sql server 2008r2 to use clr v4.0 instead of v2.0?如何说服 sql server 2008r2 使用 clr v4.0 而不是 v2.0?
【发布时间】:2023-03-16 16:35:01
【问题描述】:

我有 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 函数。

【问题讨论】:

  • You can't,它被锁定在代码中以使用最新版本的.NET 2.0
  • 关于“根据我的互联网研究它支持.net framework 4.0”,什么研究?哪里有人说 SQL Server 2008 R2 可以将 CLR v4 用于 SQLCLR? SQL Server 2008 R2 附带了一些使用 CLR v4 的工具,但这与 SQLCLR 中的功能不同。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2010-10-07
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    相关资源
    最近更新 更多