ATL OLE DB 使用者模板与 SQL 服务器的 Microsoft OLE DB 驱动程序不兼容 (MSOLEDBSQL)?

ATL OLE DB Consumer Templates incompatible with Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL)?

我的应用程序使用 ATL OLE DB 使用者模板,但我希望将 OLE DB 驱动程序升级到 "Microsoft OLE DB Driver for SQL Server"(版本 18.2 或 18.3)并且我已经下载并安装了驱动程序,并更改了连接中的提供程序应用程序中的字符串 "Provider=MSOLEDBSQL",运行 应用程序只能在 atldbsch.h 文件的调试器中看到,因为代码在逐行步进时到达那里 link 转向 oledb32.dll 和 sqloledb.dll 而不是安装在 System32 目录中的新 msoledbsql.dll。

我无法使用新的 OLE DB 驱动程序;我需要做什么才能使它 link 成为新的 DLL?是应用程序使用 ATL OLE DB 消费者模板这一事实决定了这一点吗?

我正在尝试连接到 SQL Server 2012 数据库,我想在其中使用 DATETIME2 数据类型,但在我的 C++ 代码中,我得到一个数据类型 130,它映射到 WSTR - varchar(27 ) 而不是 DB_DATETIME(数据类型 135)。如果代码成功使用 "Microsoft OLE DB Driver for SQL".

的 18.2 或 18.3 版本,则不应发生这种情况

好吧,我可能已经自己解决了它,但我尝试了很多东西试图让它工作,所以我不完全确定我做了什么。但是,我怀疑我将 "msoledbsql.h" 的包含尽可能地移到了 stdafx.h 文件中,以便尽可能晚地包含它,以防任何其他包含文件包含任何其他旧的oledb 文件。

不知道这是否对任何人有帮助,但它似乎对我有用。