用于 TLS1.2 的 VB6 应用程序 ado 连接

Posted

技术标签:

【中文标题】用于 TLS1.2 的 VB6 应用程序 ado 连接【英文标题】:VB6 application ado connection for TLS1.2 【发布时间】:2017-08-26 00:48:48 【问题描述】:

我必须支持仍在生产中的 VB6 应用程序(呃)。一位客户指定我们的软件需要符合 PCI 标准,这需要 TLS 1.2。

有人知道怎么做吗?

我正在使用 SQL Server 2014。我已修补以构建 12.0.4502.0。

Public Function GetConnection() As ADODB.Connection
  Dim con As ADODB.Connection

  On Error Resume Next
  Set con = New ADODB.Connection
  con.ConnectionTimeout = 10

  Dim connstring As String
  'connstring = "Provider=SQLOLEDB;Server=" & gstrServer & ";Database=" & gstrDB & ";User Id=" & gstrUser & ";Password=" & gstrPwd
  connstring = "Provider=MSDASQL;DRIVER=Sql Server;Server=" & gstrServer & ";Database=" & gstrDB & ";UID=" & gstrUser & ";PWD=" & gstrPwd

  con.Open connstring

  If Err Then Set con = Nothing
  Set GetConnection = con
End Function

项目引用“Microsoft ADO Ext. 6.0 for DDL and Security”和“Microsoft ActiveX Data Objects 2.5 Library”

我尝试了多个连接字符串选项。

谢谢!

【问题讨论】:

ADOX 是一个仅限 Jet 的库。在任何情况下,您都需要使用更新的 SQL Server Native Client 或支持 TLS 1.2 的同等产品,这不是 VB6 的责任,而是 SQL Server 的问题。 这是有道理的。问题仍然是安装了 sql 更新时要引用什么对象。我确实在Microsoft site 上找到了一些支持。但是目前还不清楚要使用哪个对象。 2.5 之后的大多数 ADO 接口更改是针对 SQL Server 的,少数适用于 Oracle。但除非您在代码中使用它们,否则 ADO 2.5 可以正常工作。如果您要询问提供程序和连接字符串的其余部分,请查阅 SQL Server 文档。 【参考方案1】:

我在Using ADO with SQL Server Native Client找到了答案。

要启用 SQL Server Native Client,ADO 应用程序将 需要在其连接字符串中实现以下关键字:

Provider=SQLNCLI11

DataTypeCompatibility=80

以下是建立完全启用工作的ADO连接字符串的示例 使用 SQL Server Native Client,包括启用 MARS 特点:

 Dim con As New ADODB.Connection

 con.ConnectionString = "Provider=SQLNCLI11;" _  
         & "Server=(local);" _  
         & "Database=AdventureWorks;" _   
         & "Integrated Security=SSPI;" _  
         & "DataTypeCompatibility=80;" _  
         & "MARS Connection=True;"   
con.Open

将提供程序更改为 SQLNCLI11 并添加 DataTypeCompatibility=80 有效。

【讨论】:

以上是关于用于 TLS1.2 的 VB6 应用程序 ado 连接的主要内容,如果未能解决你的问题,请参考以下文章

VB6 ADO 连接 - 如何检查是不是在事务中?

VB6 - DAO - 存储过程

SQL Server TLS 1.2 通信真的加密了吗?

VB6.0编写的程序在win7或win8上可以用吗

VB6 程序连Ora-06413解决手札

Payflow Pro和TLS 1.2通过COM DLL