我正在尝试通过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
答案 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以来没有得到增强,并且不知道此后添加的数据类型。