sql-server - 可以使用相同的连接字符串连接到 DAO 中的数据源,但不能连接到 ADO 中的数据源
问题描述
我正在尝试通过 DAO / ADO 从 Access 在 SQL Server 后端执行 SQL Server 存储过程。
通过使用带有到 ODBC 数据源的连接字符串的传递查询,我可以让它在 DAO 中运行良好但是当我尝试在 ADO Connection 对象上使用相同的连接字符串时,我只收到以下消息:
错误 -2147467259:[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序(Microsoft OLE DB Provider for ODBC Drivers)
与 DAO 一起使用的连接字符串是一个指向 DSN 文件的指针:“ODBC;FILEDSN=RISCGen2.dsn”。
考虑到 ADO 可能无法消化这一点,我尝试将字符串替换为 DSN 文件中的相关内容,即:
“ODBC;DRIVER={ODBC Driver 11 for SQL Server};UID=my.loginid;PWD=mypassword;SERVER=WYNRISC08;Database=RISCGen2”.
但是,我仍然遇到同样的错误。
有人能发现我哪里出错了吗?提前致谢。
附录
Dan Guzman 已经回答了我提出的问题。现在的问题已成为了解有关 ADO 做事方式的某些混乱细节的问题之一。我想我需要问另一个问题来处理它......发布的新问题:从 VBA 执行 SQL 存储过程并检索所有消息和结果集
解决方案
ODBC;DRIVER={ODBC Driver 11 for SQL Server};UID=my.loginid;PWD=mypassword;SERVER=WYNRISC08;Database=RISCGen2
省略无关ODBC
规范:
DRIVER={ODBC Driver 11 for SQL Server};UID=my.loginid;PWD=mypassword;SERVER=WYNRISC08;Database=RISCGen2
请注意,经典 ADO 本身就是 OLE DB,并使用 Microsoft OLE DB Provider for ODBC Drivers (MSDASQL) 来使用 ODBC 驱动程序。最好改用 OLE DB 提供程序。您可以使用随 Windows (SQLOLEDB) 提供的旧版 SQL Server OLE DB 提供程序,但最好在撰写本文时使用最新的 MSOLEDBSQL 驱动程序。连接字符串是:
Provider=MSOLEDBSQL;UID=my.loginid;PWD=mypassword;SERVER=WYNRISC08;Database=RISCGen2
您可能需要指定DataTypeCompatibility=80
是否使用较新的 SQL 数据类型,因为 ADO 经典是一个成熟的 API,自 SQL Server 2000 以来尚未增强,并且不知道此后添加的数据类型。
推荐阅读
- python - Django 中的单例对象行为
- python - 仅通过附加和使用范围函数来删除索引
- sql - 创建一个表,其中包含具有来自另一个表的值的属性
- node.js - 节点js中的猫鼬模式
- maven - 如何生成一个包含 /src/main/java 和 /src/test/java 的 SINGLE jar
- python - 如何从调用程序强制执行函数所用时间的上限?
- swift - 如何为视图外观设置动画?
- typescript - TypeScript 中包含数组的接口
- reactjs - TypeError: undefined is not an object(evaluation'this.setState')
- excel - 使用命令按钮时如何插入带有文本前缀的下一个增量编号