不推荐使用SQLNCLI,但这是否仅适用于SQLNCLI OLEDB或SQLNCLI ODBC?

问题描述

我们有一个用C(不是c ++)编写的应用程序,它使用sqlncli.h,特别是ODBC实现而不是OLEDB。 According to Microsoft

sql Server本机客户端(sqlNCLI)仍被弃用,不建议将其用于新的开发工作。相反,请使用新的用于sql Server的Microsoft OLE DB驱动程序(MSOLEDBsql),它将使用最新的服务器功能进行更新。

此引文链接MSOLEDBSQL article,它说明了如何使用MSOLEDBsql构建应用程序,指示您应该:

  1. 要在现有应用程序中为sql Server使用新的Microsoft OLE DB驱动程序,您应该计划将连接字符串从sqlOLEDB或sqlNCLI转换为MSOLEDBsql

  1. 使用新标题链接到的文章here

就这么简单,对吧?并非如此,因为我们尝试遵循这些说明并实现新的标头(msoledbsql.h),并且它似乎不支持来自sqlncli.h的旧数据类型,例如DBINT。因此,我正在考虑此时弃用声明可能与ODBC不相关。还有评论

因此,在此新版本中保持了与当前使用SNAC 11的应用程序的向后兼容性

found here仅适用于OLEDB

我的问题是,如果您使用的是sqlNCLI ODBC(而不是sqlNCLI OLEDB),则似乎实际上并未弃用。那是对的吗?例如,存在OLEDB here的弃用警告,但不存在ODBC页here的弃用警告。

预先感谢您的帮助。

解决方法

如果您使用的是SQLNCLI ODBC(而不是SQLNCLI OLEDB),则似乎实际上并未弃用

已弃用,但仍支持某些版本。不建议使用SQLNCLI中的SQL Server OleDB提供程序时,ODBC驱动程序的包装已更改,并且代码已移植到ODBC Driver For SQL Server

OleDb提供程序后来被弃用,并产生了一个新的提供程序。但这是另一个故事。

因此从本质上讲,使用SNAC ODBC时,您使用的是旧版本的ODBC驱动程序,并且应该在某个时候升级到新版本。