VB6应用程序ADO连接TLS1.2

10

我需要支持一款仍在生产中的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”。

我尝试过多种连接字符串选项。

谢谢!


2
ADOX是一个仅适用于Jet的库。无论如何,如果您需要使用较新的SQL Server Native Client或等效支持TLS 1.2,那不是VB6的责任,而是SQL Server的问题。 - Bob77
那很有道理。问题仍然是使用哪个对象来引用已安装的SQL更新。我在Microsoft网站上找到了一些支持。但现在不清楚要使用哪个对象。 - FatherOfDiwaffe
ADO接口2.5之后的大部分更改都是针对SQL Server的,只有少数适用于Oracle。但是,除非您在代码中使用它们,否则ADO 2.5可以正常工作。如果您想了解提供程序和连接字符串的其余部分,请参阅SQL Server文档。 - Bob77
1个回答

20

我在使用 ADO 与 SQL Server 原生客户端中找到了答案。

为了启用 SQL Server 原生客户端的使用,ADO 应用程序需要在其连接字符串中实现以下关键字:

Provider=SQLNCLI11

DataTypeCompatibility=80
下面是建立一个完全启用SQL Server Native Client工作的ADO连接字符串的示例,包括启用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即可解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接