sql-server sqloledb是否在Windows Server 2019上使用MSOLEDBSQL

4uqofj5v  于 2022-10-31  发布在  Windows
关注(0)|答案(3)|浏览(373)

通过OleDbConnection Class (System.Data.OleDb.dll)使用提供程序“sqloledb.1”的旧版软件仍能在Windows Server 2019(采用TLS1.2)上正常运行,而在Server 2016或2012 R2(采用TSL1.2)上则无法正常运行?
Windows Server 2016收到以下错误,这是预期的,因为它使用的是不支持TLS1.2的sqloledb。这是众所周知的,如here.所示

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

Windows Server 2019工作正常,我不知道为什么。它是在努力寻找sqloledb并默认使用支持TLS1. 2的新驱动程序(MSOLEDBSQL)吗?
所有服务器都安装了相同版本的Microsoft OLE DB Driver for SQL Server,即18.5。
尝试了不同版本的SQL Server,2017和2019。

更新

显示版本信息的sqloledb.dll属性
服务器2019

服务器2016

j13ufse2

j13ufse21#

sqloledb是Windows的一部分,最近更新为支持TLS 1.2。请参阅KB4580390
在使用Microsoft数据访问组件(MDAC)中的数据访问接口连接到SQL Server时,添加对传输层安全性(TLS)1.1和1.2协议的支持。
因此,截至“Windows 10,版本1809,Windows服务器版本1809”(操作系统构建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
dbf7pr2w

dbf7pr2w2#

SQL Server OLE DB提供者

| OLE DB提供者|项目名称|可用于|最低SQL Server配置|最大值TLS|已安装|状态(截至2022年第3季度)|
| - -|- -|- -|- -|- -|- -|- -|
| SQLOLEDB|“用于SQL Server的Microsoft OLE DB提供程序”|Windows 2000操作系统|SQL服务器7.0(70个)|TLS 1.0版|Windows(MDAC)|Deprecated|
| SQLOLEDB个(2021 update)|“用于SQL Server的Microsoft OLE DB提供程序”|Windows 10操作系统|SQL服务器7.0(70个)(TLS 1.2需要SQL Server 2008及更高版本)|TLS 1.2版|Windows(MDAC)|Deprecated|
| SQLNCLI|“SQL Server本机客户端”(“SNAC”)|SQL服务器2005| SQL服务器7.0(70个)|TLS 1.1注解1| 手动操作|Deprecated|
| SQLNCLI10|“SQL Server本机客户端10.0”|SQL服务器2008| SQL服务器2000(80个)|TLS 1.2版|手动操作|Deprecated|
| SQLNCLI102020 update)|“SQL Server本机客户端10.0”||SQL服务器2000(80个)(TLS 1.2需要SQL Server 2008及更高版本)| TLS 1.2版| Manually| Deprecated|
| SQLNCLI11|“SQL Server本机客户端11.0”|SQL服务器2012| SQL服务器2005(90个)|TLS 1.2版|手动操作|Deprecated|
| SQLNCLI112018 update)|“SQL Server本机客户端11.0”||SQL服务器2005(90个)(TLS 1.2需要SQL Server 2008及更高版本)| TLS 1.2版| Manually| Deprecated|
| MSOLEDBSQL|“用于SQL Server的Microsoft OLE DB驱动程序”|2017 Announcement|SQL Server 2012数据库管理系统(SQL Server 2016+ needed for TLS 1.3)|TLS 1.3版|手动操作|****|
| MSOLEDBSQL19|“适用于SQL Server的Microsoft OLE DB驱动程序19”|SQL服务器2019| SQL Server 2012数据库管理系统(TLS 1.3需要SQL Server 2016及更高版本)|TLS 1.3版|手动操作|****|
注意
1
:即使TLS 1.1是在SQL Server 2005 * 之后 * 的2006年发布的,但当SChannel系统on both the Server and Client machines supports TLS 1.1时,SQL Server 2005的原始SQLNCLI“免费”支持TLS 1.1。

von4xj4u

von4xj4u3#

就我在Internet上看到的,当使用ADO时,本机客户端比MSOLEDBSQL驱动程序快,因为OleDB是两者之间的一个不同层。

相关问题