用于 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 连接的主要内容,如果未能解决你的问题,请参考以下文章