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

时间:2018-07-02 13:37:31

标签: sql-server odbc ado dao

我正在尝试通过DAO / ADO从Access在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的某些特定细节的问题之一。我认为我需要问另一个问题来处理...新问题发布:Execute SQL stored procedure from VBA and retrieve all messages and result sets

1 个答案:

答案 0 :(得分:0)

  

ODBC; DRIVER = {用于SQL的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提供程序的ODBC驱动程序(MSDASQL)来使用ODBC驱动程序。最好改用OLE DB提供程序。您可以使用Windows附带的旧版SQL Server OLE DB提供程序(SQLOLEDB),但最好使用the latest MSOLEDBSQL driver as of this writing。的连接字符串是:

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

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