【问题标题】:VB6 application ado connection for TLS1.2用于 TLS1.2 的 VB6 应用程序 ado 连接
【发布时间】: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 文档。

标签: vb6 ado adodb tls1.2


【解决方案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 有效。

【讨论】:

    猜你喜欢
    • 2010-09-30
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多