通过OleDbConnection类(System.Data.OleDb.dll)使用提供者"sqloledb.1“的遗留软件仍在Windows 2019上使用TLS1.2。而在服务器2016或2012年使用TSL1.2的R2上,它不是吗?
Windows 2016将获得以下错误,因为它使用的sqloledb不支持TLS1.2。这是众所周知的这里。。
[DBNETLIB][ConnectionOpen (SECCreateCredentials()).]SSL Security error.
Windows 2019工作,我不知道原因。是否很难找到sqloledb并默认使用支持TLS1.2的新驱动程序(MSOLEDBSQL)?
所有服务器都安装了相同版本的Microsoft SQL Server驱动程序 ( 18.5 )。
尝试了不同版本的SQL server,2017和2019。
更新
显示版本信息的sqloledb.dll属性
服务器2019年
服务器2016
发布于 2021-06-11 22:11:23
sqloledb
是Windows的一部分,最近对它进行了更新,以支持TLS 1.2。请参阅KB4580390
在使用Microsoft数据访问组件(MDAC)中的数据提供程序连接到Server时,添加对传输层安全性(TLS) 1.1和1.2协议的支持。
因此,对于“Windows10,Version1809,WindowsServerVersion1809”(OS Build 17763.1554)来说,这应该是可行的。
在Windows 1020H2上进行本地测试
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
发布于 2022-06-08 05:34:26
据我在互联网上所能看到的,在使用ADO时,本机客户端比MSOLEDBSQL驱动程序更快,因为OleDB在两者之间是一个不同的层。
https://stackoverflow.com/questions/67943468
复制相似问题