繁体   English   中英

可以使用相同的连接字符串连接到DAO中的数据源,但不能连接到ADO中的数据源

[英]Can connect to data source in DAO but not in ADO using the same connection string

我正在尝试通过Access通过DAO / ADO在SQL Server后端上执行SQL Server存储过程。

通过使用传递查询以及到ODBC数据源的连接字符串,我可以使它在DAO中很好地工作。但是,当我尝试在ADO Connection对象上使用相同的连接字符串时,我仅收到以下消息:

错误-2147467259:[Microsoft] [ODBC驱动程序管理器]数据源名称未找到且未指定默认驱动程序(用于ODBC驱动程序的Microsoft OLE DB提供程序)

使用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 = {用于SQL Server的ODBC驱动程序11}; UID = my.loginid; PWD = mypassword; SERVER = WYNRISC08;数据库= 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附带的旧版SQL Server OLE DB提供程序(SQLOLEDB),但在撰写本文时,最好使用最新的MSOLEDBSQL驱动程序 的连接字符串为:

Provider=MSOLEDBSQL;UID=my.loginid;PWD=mypassword;SERVER=WYNRISC08;Database=RISCGen2

如果您使用较新的SQL数据类型,则可能需要指定DataTypeCompatibility=80 ,因为ADO classic是一种成熟的API,自SQL Server 2000以来未得到增强,并且不知道此后添加的数据类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM