Microsoft OLE DB Provider for SQL Server是否支持TLS 1.2

时间:2017-09-02 07:56:21

标签: sql-server oledb tls1.2

我们的客户最近从TLS 1.0升级到TLS 1.2,之后我们的软件无法与SQL服务器连接。它使用OLE DB提供程序连接到SQL Server。 以下是从SQL服务器返回的错误 -

[DBNETLIB] [ConnectionOpen SECDoClientHandshake()] SSL安全性错误 SQL状态:08001 SQL错误号:18

找不到与Microsoft OLE DB Provider for SQL Server是否支持TLS 1.2相关的任何有用信息。

我发现的其中一个链接似乎暗示它不受支持。 https://forums.iis.net/t/1233674.aspx?connecing+SQL+server+DB+issue+after+installingTLS1+2+in+SQL+srver+with+classic+asp+application+

因此,想要检查stackoverflow,以防任何人有任何关于此的信息。

6 个答案:

答案 0 :(得分:16)

Windows附带的SQLOLEDB提供程序和SQL Server ODBC驱动程序是仅为向后兼容性而提供的旧组件。自SQL 2005以来,这些已被弃用。

根据this blog post by the MSSQL Tiger Team

  

SQLOLEDB不会获得对TLS 1.2的支持。你需要切换   您的驱动程序是其中一个受支持的驱动程序   https://support.microsoft.com/en-us/kb/3135244

您应该能够安装SQL Server Native Client 2012并使用该OLE DB提供程序仅更改连接字符串(将Provider=SQLOLEDB更改为Provider=SQLNCLI11)。当然,一旦应该测试,以避免意外。例如,我记得有人在使用服务器API游标时遇到与SQL Server Native Client提供程序和ADO classic的行为差异,尽管常用的firehose游标很好。

修改

新的OLE DB驱动程序MSOLEDBSQL已经发布。此新驱动程序包括对最新TLS 1.2标准的支持,并向后兼容SQL Server Native Client 11(SQLNCLI11)。请参阅the Microsoft SQLNCLi team blog announcement

答案 1 :(得分:8)

这对您来说可能不是一个解决方案,因为它是您的客户可能无法等待的未来修复,但显然Microsoft 不推荐 OLEDB驱动程序,新版本支持TLS 1.2 2018年第一季度:https://blogs.msdn.microsoft.com/sqlnativeclient/2017/10/06/announcing-the-new-release-of-ole-db-driver-for-sql-server/

  

用于SQL Server的新Microsoft OLE DB驱动程序或msoledbsql将使用   首先介绍多子网故障转移功能   即将发布的并跟上最新的TLS 1.2标准

     

此外,第一个即将发布的版本将是一个独立安装   与SQL Server生命周期带外的程序包。这也意味着   驱动程序不会打包在SNAC库中,也不会与之配合使用   任何其他司机。

答案 2 :(得分:0)

在我端进行以下更改解决了Azure云上的TLS1.2升级后的问题-

  • Provider=SQLOLEDB更改为Provider=SQLNCLI11
  • 将ADODB版本更新为Microsoft ActiveX数据对象6.0库

答案 3 :(得分:0)

这可能无法直接回答问题,但仍与TLS 1.2错误的sql server连接有关。

我正在维护一个旧的ASP Classic网站,该网站因以下错误而中断。

Microsoft OLE DB Provider for SQL Server error '80004005'
[DBNETLIB][ConnectionOpen (SECDoClientHandshake()).]SSL Security error. 

ProviderSQLOLEDB更改为SQL Server Native Client 11.0或任何可用的更高版本,可以解决该错误。

因此,从

更改连接字符串
constr = "Provider=SQLOLEDB;Data Source=..."

constr = "Provider=SQL Server Native Client 11.0;Data Source=...."

也可能工作

答案 4 :(得分:0)

使用“Microsoft OLEDB Driver for SQL Server”对我们有用,但我也可以确认 Native Driver 11 也测试正常。

这是我们的场景:在我们禁用 TLS 1.0 和 1.1 并启用 TLS 1.2 后,使用“Microsoft OLEDB Provider for SQL Server”的 Crystal Reports 将不再连接。相反,您会收到一个 user/pw 提示,即使使用有效凭据也会失败。在我们的例子中,我们从嵌入了 Crystal 13 查看器的 ASP.NET v4.5.2 应用程序中运行 Crystal Reports。用户从报告列表中选择并运行它们,它们在启用 TLS 1.0 的情况下在没有提示的情况下运行。

要解决此问题,我们必须在设计器中打开报告并将其报告从使用“Microsoft OLEDB Provider for SQL Server”转换为使用“Microsoft OLEDB 驱动程序”强> 用于 SQL Server”。

如果您在列表中没有看到驱动程序,这里是 SQL Server 的 OLEDB 驱动程序:https://docs.microsoft.com/en-us/sql/connect/oledb/download-oledb-driver-for-sql-server?view=sql-server-ver15

感谢 Dan Guzman,他在有些隐蔽的评论和上面的更新中提到了“司机”的存在。

答案 5 :(得分:0)

TLS 1.2 支持已添加到 Windows 中的 sqloledb。见KB4580390