【发布时间】:2014-12-09 00:03:55
【问题描述】:
似乎所有从 VBA 项目直接访问 SQL Server 数据库的方法都已被弃用:
- 带有 ODBCDirect 的 DAO:Access 2007 已放弃支持。
- DAO via JET:你不是认真的,对吧?无论如何,它是 Microsoft 的 considered obsolete。
- 带有 SQLOLEDB 提供程序的 ADO:Deprecated。
- 带有 SQL Server Native OLEDB 提供程序的 ADO:Won't be supported after SQL Sever 2012。
- 带有用于 ODBC 的 Microsoft OLE DB 提供程序的 ADO:Not supported:“用于 ODBC 的 Microsoft OLE DB 提供程序 (MSDASQL) 不支持 SQL Server Native Client。”
我错过了什么? Microsoft 批准的从 VBA 访问 SQL Server 数据库的官方方法是什么(毕竟,不已弃用,仍然是 Office 2013 中包含的官方开发语言)?
【问题讨论】:
-
我多年来一直在使用 ADODB 或 DAO,从未遇到任何与 deprecation 相关的错误...
Driver={SQL Server}? -
当我不使用链接表时,我一直在使用 DAO,它运行良好。它是 Access 中的“原生方式”,我从未听说它已被弃用(预计在 2007 年会有一段时间?)。使用 DAO 时,我什至看不到它是 odbc direct 还是 jet。谁在乎呢?
-
@vba4all:我也不是,但这并不奇怪:弃用并不意味着“它不再工作”,弃用意味着“不要将它用于新开发,它可能随时停止工作”。我们目前正在重新设计 VBA 应用程序的数据访问层,所以我很好奇目前推荐的访问 SQL Server 数据的方式。
-
@iDevlop:我在乎。 :-) 如果看不到是 ODBC direct 还是 JET,那么您可能正在使用 JET,这意味着您必须使用 JET SQL 语法,并且不能使用任何本机 T-SQL 语句(公用表表达式等)。
-
@Heinzi:对,但是您可以轻松地创建直通查询,无论是纯粹在 VBA 中还是在保存的查询中。性能与其他客户端相当,在 Oracle 和 Sql Server 上使用相当大的表进行测试。在这种情况下,您使用的是服务器的语法。
标签: sql-server vba excel ms-access