Sql server 2008 r2 如何在SQLCLR 2中启用TLS 1.2支持?

Sql server 2008 r2 如何在SQLCLR 2中启用TLS 1.2支持?,sql-server-2008-r2,.net-3.5,tls1.2,sqlclr,Sql Server 2008 R2,.net 3.5,Tls1.2,Sqlclr,我需要强制在SQLServer2008R2上安装的SQLCLR程序集中使用TLS1.2。 我已经阅读了关于如何以编程方式启用TLS1.2的说明 不幸的是,添加System.Net.ServicePointManager.SecurityProtocol=SecurityProtocolTypeExtensions.Tls12导致错误请求的安全协议不受支持,即使Windows服务器(2008 R2)是最新的(包括上面提到的Microsoft修补程序) 有人在SQLCLR汇编中使用相同的方法吗?是否

我需要强制在SQLServer2008R2上安装的SQLCLR程序集中使用TLS1.2。 我已经阅读了关于如何以编程方式启用TLS1.2的说明

不幸的是,添加
System.Net.ServicePointManager.SecurityProtocol=SecurityProtocolTypeExtensions.Tls12导致错误请求的安全协议不受支持,即使Windows服务器(2008 R2)是最新的(包括上面提到的Microsoft修补程序)

有人在SQLCLR汇编中使用相同的方法吗?是否有其他方法支持此类组件中的TLS 1.2


程序集的目标框架设置为:.NET framework 3.5

您链接到的答案实际上包含以下代码,这些代码与我自己尝试过并开始使用的代码类似,实际上与使用
SecurityProtocolTypeExtensions的代码相同:

将此添加到我的代码(C#)中:

public const SslProtocols\u Tls12=(SslProtocols)0x00000;
public const SecurityProtocolType Tls12=(SecurityProtocolType)\u Tls12;
ServicePointManager.SecurityProtocol=Tls12
你确实试过了吗?另外,如果SQL Server在Windows Server 2008 R2上运行,那么操作系统的SP级别是什么?阅读有关“”的知识库文章(链接到您链接到的答案中),有几种可能出现“System.NotSupportedException:请求的安全协议不受支持”错误:

  • 未安装修补程序(更新.NET后是否重新启动了操作系统?)
  • 您的SQL Server正在Windows Server 2008上运行,而不是在2008 R2上运行
  • 如果这两种情况都不是这样,那么明确针对.NET3.5.1可能会起作用(尽管我认为没有必要)。虽然您确实提到已将目标锁定在3.5.1,但我怀疑您在项目的app.config文件中这样做了,在这种情况下,它将没有任何效果,因为SQL Server不知道该文件。SQL Server使用位于以下位置的自己的应用程序配置文件:

    “C:\Program Files\Microsoft SQL Server\MSSQLxx.yyyy\MSSQL\Binn\sqlservr.exe.config”

    其中:

    • “xx”=两位SQL Server版本:2008/2008 R2=10、2012=11、2014=12,依此类推
    • “yyyy”=实例名称。默认实例名称为“MSSQLSERVER”

    更改配置文件后,您至少需要通过DBCC FREESYSTEMCACHE(N'ALL')重新加载用户应用程序域。这应该足够了。但是,为了100%确定您可以重新启动SQL Server实例。

    结果表明,即使系统显示该修补程序是最新的(Windows Server 2008 R2 SP1),也可能未安装上述修补程序。我已要求管理员手动安装修补程序,我将再次检查。尽管如此,感谢您的回答,这使我确信它不是SQLCLR限制,但可能是无效配置。安装修补程序后,我将标记此答案。@gis“即使系统显示修补程序是最新的,也可能不会安装修补程序”:这可能只是表明需要重新启动操作系统,如果它看起来像已安装,但不像已安装。祝你好运。管理员已确认没有安装修补程序。目前,在手动安装后,它可以按预期工作。因此,我猜提到的“最新”消息可能并不确切地表明系统“通过Windows Update完全更新”。顺便说一句,我很确定系统在自动更新后被重新启动了好几次,所以我不认为这是原因。