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.
通过 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.