【问题标题】:SQLNCLI is Deprecated, but is that only for SQLNCLI OLEDB, or for SQLNCLI ODBC as well?SQLNCLI 已弃用,但这仅适用于 SQLNCLI OLEDB,还是也适用于 SQLNCLI ODBC?
【发布时间】:2020-08-18 21:27:31
【问题描述】:

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

SQL Server Native Client (SQLNCLI) 仍然被弃用,不建议将其用于新的开发工作。相反,请使用新的 Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL),它将使用最新的服务器功能进行更新。

此引用链接到 MSOLEDBSQL article,它解释了如何使用 MSOLEDBSQL 构建应用程序,表明您应该:

  1. 要在现有应用程序中使用新的 Microsoft OLE DB Driver for SQL Server,您应该计划将连接字符串从 SQLOLEDB 或 SQLNCLI 转换为 MSOLEDBSQL。

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

就这么简单,对吧?不是真的,因为我们已经尝试按照这些说明实现新的标头 (msoledbsql.h),但它似乎不支持旧数据类型,例如来自 sqlncli.h 的 DBINT。所以,我现在在想,弃用公告可能与 ODBC 无关。还有评论

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

found here 仅适用于 OLEDB

我的问题是,如果您使用的是 SQLNCLI ODBC(而不是 SQLNCLI OLEDB),那么它似乎实际上并没有被弃用。那是对的吗?例如,OLEDB here 存在弃用警告,但 ODBC 页面 here 不存在。

提前感谢您的帮助。

【问题讨论】:

    标签: sql-server odbc sqlncli


    【解决方案1】:

    如果您使用的是 SQLNCLI ODBC(而不是 SQLNCLI OLEDB),那么它似乎实际上并没有被弃用

    已弃用,但仍支持某些版本。当 SQLNCLI 中的 SQL Server OleDB Provider 被弃用时,ODBC 驱动的封装发生了变化,代码移植到了ODBC Driver For SQL Server

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

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

    【讨论】:

    • 嗨,大卫。感谢您的快速回复。只是为了澄清一下,说使用 SNAC ODBC 的 Windows C 解决方案将简单地将解决方案重新定位到较新的 Windows SDK 是否正确,因为这是提供 ODBC 标头的位置,然后切换连接字符串以使用较新的司机。而 SNAC OLEDB 会按照前面提到的文章来实现 msoledbsql.h 标头吗?太感谢了。我知道有一个 Linux SQL 驱动程序,但目前这是一组不同的问题。
    • 基本上是的。更改 ODBC 驱动程序是一个小改动。切换到 OleDb 很重要。
    猜你喜欢
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    相关资源
    最近更新 更多