将 Microsoft Access 查询切换到 ODBC Driver 17 for SQL Server 不返回任何记录

问题描述

我们正在更改为 ODBC 驱动程序 17 以支持 TLS 1.2,将提供程序从 sqloledb 更改为驱动程序 ODBC 17 会导致记录集为空。查询执行,正如我在 sql Profiler 中看到的那样,但没有记录返回到 Microsoft Access。这是旧的连接字符串和新的连接字符串。

Dim connectionString As String
' old - this worked connectionString = "Provider=sqloledb;Server=sql\sqlInstance;Database=databaseName;Trusted_Connection=yes;"    
connectionString = "DRIVER={ODBC Driver 17 for sql Server};Server=sql\sqlInstance;Database=databaseName;Trusted_Connection=yes;"

Dim Rs As ADODB.Recordset
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command

cmd.ActiveConnection = connectionString
cmd.CommandText = "SELECT * From [dbo].[TableName]"
cmd.CommandType = adCmdText
Set Rs = cmd.Execute

是否有其他方法可以使用此方法返回记录?我已经简化了用于故障排除目的的问题,真实案例使用了参数化存储过程。

解决方法

"Provider=MSOLEDBSQL;Server=SQL\SQLInstance;Database=databaseName;
Trusted_Connection=yes;DataTypeCompatibility=80;MARS Connection=True;"

这最终是正确的连接字符串,在遵循@DavidBrowne-Microsoft 的链接之后,我需要为 SQL Server 安装 Microsoft OLE DB 驱动程序 18.5 并在它工作之前重新启动。