问题描述
我们正在更改为 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 并在它工作之前重新启动。