sqloledb 实际上是在 Windows Server 2019 上使用 MSOLEDBSQL

Is sqloledb actually using MSOLEDBSQL on Windows Server 2019

通过 OleDbConnection Class (System.Data.OleDb.dll) 使用提供程序“sqloledb.1”的旧版软件仍在使用 TLS1.2 的 Windows Server 2019 上运行。而在带有 TSL1.2 的 Server 2016 或 2012 R2 上不是吗?

Windows Server 2016 收到以下错误,这是预期的,因为它使用的是不支持 TLS1.2 的 sqloledb。这是众所周知的

[DBNETLIB][ConnectionOpen (SECCreateCredentials()).]SSL Security error.

Windows 服务器 2019 工作,我不知道为什么。是否正在努力寻找 sqloledb 并默认为支持 TLS1.2 的新驱动程序 (MSOLEDBSQL)?

所有服务器都安装了相同版本的Microsoft OLE DB Driver for SQL Server,18.5.

尝试了不同版本的 SQL 服务器,2017 年和 2019 年。

更新

sqloledb.dll 显示版本信息的属性

服务器 2019

服务器 2016

sqloledb 是 Windows 的一部分,最近更新为支持 TLS 1.2。见 KB4580390:

Adds support for the Transport Layer Security (TLS) 1.1 and 1.2 protocols when connecting to SQL Server using the data providers in Microsoft Data Access Components (MDAC).

从“Windows 10,版本 1809,Windows 服务器版本 1809”(OS Build 17763.1554)开始,这应该可以工作。

在 Windows 10 20H2 运行

进行本地测试
static void Main(string[] args)
{

    using (var con = new OleDbConnection("Provider=sqloledb;data source=localhost;trusted_connection=yes;Network Library=DBMSSOCN"))
    {
        con.Open();
        Console.WriteLine("Hello");
        Console.ReadKey();
    }
}

在服务器上强制协议加密的地方:

并捕获此 XEvent:

CREATE EVENT SESSION [tls] ON SERVER 
ADD EVENT sqlsni.sni_trace(
    WHERE ([sqlserver].[like_i_sql_unicode_string]([text],N'%Handshake%')))

捕获此调试消息:

text    SNISecurity Handshake Handshake succeeded. Protocol: TLS1.2 (1024), Cipher: AES 256 (26128), Cipher Strength: 256, Hash: SHA 384 (32781), Hash Strength: 0, PeerAddr: 127.0.0.1 

SQL 服务器 OLEDB 提供商

OLEDB Provider Available with Minimum SQL Server TLS Installed with
SQLOLEDB Windows 2000 SQL Server 7 (70) TLS 1.0 Windows
SQLNCLI SQL Server 2005 SQL Server 7 (70) Yes Manually
SQLNCLI10 SQL Server 2008 SQL Server 2000 (80) Yes Manually
SQLNCLI11 SQL Server 2012 SQL Server 2005 (90) Yes Manually
MSOLEDBSQL SQL Server 2016 SQL Server 2005 (90) Yes Manually

众所周知,Windows 随附的 SQL 服务器驱动程序不支持任何高于 TLS 1.0 的版本。但我喜欢 David Browne 的回答,他暗示 TLS 1.2 支持即将达到 Windows 10.