通过OleDbConnection 类 (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.
Run Code Online (Sandbox Code Playgroud)
Windows Server 2019 可以工作,但我不知道为什么。是否很难找到 sqloledb 并默认使用支持 TLS1.2 的新驱动程序 (MSOLEDBSQL)?
所有服务器都安装了相同版本的Microsoft OLE DB Driver for SQL Server,即 18.5。
尝试了不同版本的 SQL Server,2017 和 2019。
更新
显示版本信息的 sqloledb.dll 属性
服务器2019
服务器2016
我正在尝试OPENROWSET在 SQL Server 2008 SP1 中使用:
SELECT *
FROM OPENROWSET(
'SQLOLEDB',
'Data Source=hydrogen;User ID=scratch;Password=scratch;',
'select * from users')
Run Code Online (Sandbox Code Playgroud)
SQLOLEDBData Source=hydrogen;User ID=scratch;Password=scratch;select * from users查询失败:
链接服务器“(空)”的 OLE DB 访问接口“SQLNCLI10”返回消息“授权规范无效”。
链接服务器“(空)”的 OLE DB 访问接口“SQLNCLI10”返回消息“连接字符串属性无效”。
消息 7399,级别 16,状态 1,第 1 行
链接服务器“(null)”的 OLE DB 提供程序“SQLNCLI10”报告了错误。身份验证失败。消息 7303,级别 16,状态 1,第 1 行无法初始化链接服务器“(空)”的 OLE DB 访问接口“SQLNCLI10”的数据源对象。
注意:服务器和凭据当然是正确的。
令人困惑的是错误表明有人正在使用 OLE DB 提供程序SQLNCLI11 (SQL Server Native Client 11.0)
链接服务器“(空)”的 OLE …