【发布时间】:2013-03-23 15:24:19
【问题描述】:
我有一个在 Windows 64 下运行的本机 C++ 应用程序,它不使用 ATL(也不会)。我希望能够通过网络从我的应用程序连接到 SQL Server 2012。
我有以下要求:
性能是关键
C++ 只会插入记录(比如通过调用存储过程),不会插入其他记录(没有选择、删除或更新)。
记录插入应该是非阻塞的(异步)。
我将选择范围缩小到 OLE DB 和 ODBC,因为它们满足上述条件。然而,互联网上似乎有很多关于使用什么的相互矛盾的建议。例子:
“如果您可以选择使用 ODBC 或 OLE DB 访问 SQL Server 数据库,请选择 OLE DB,因为它通常更快。[7.0, 2000, 2005] 更新于 2-20-2006”源:http://www.sql-server-performance.com/2007/odbc-oledb/
“OLE DB 已弃用”来源:http://weblogs.sqlteam.com/dang/archive/2011/09/04/rip-ole-db.aspx
“避免将 OLE DB 用于新的 SQL Server 应用程序开发。更新您的技术路线图以迁移使用 SQLNCLI、SQLNCLI10、SQLNCLI11 或 SQLOLEDB OLE DB 提供程序的现有 SQL Server 应用程序到 SQL Server Native Client ODBC 驱动程序。”来源:http://weblogs.sqlteam.com/dang/archive/2011/09/04/rip-ole-db.aspx 但 SQLNCLI11 是基于 MSDN 的 SQL Server Native Client ODBC 驱动程序:http://msdn.microsoft.com/library/ms130904.aspx 那么,是不是博客中的错字?
我真的很困惑,想就按照我的标准访问 SQL Server 的最佳技术发表更多意见。
【问题讨论】:
-
请考虑,仅仅因为某些东西已被弃用并不意味着您不能使用它。世界各地都有不受支持的 SQL Server 2000 机器,它们运行在早已过时的操作系统上,即使它们运行的大部分软件早已被弃用,这些应用程序仍继续运行。我并不是说这是使用旧废话来支持新的论据,但是由于您选择使用 C++,也许您可以做更糟糕的事情...
-
Native Client 设置包括一个 OLE DB 提供程序 (SQLNCLIxx) 和一个 ODBC 驱动程序。 SQLNCLI11 是一个 OLE DB 提供程序,它不是“SQL Server Native Client ODBC 驱动程序”。只需使用 ODBC。
-
@wqw 这是您所说的用法示例吗? blog.nhaslam.com/2011/12/19/… 即使它包含 sqlncli.h?
标签: c++ sql-server odbc oledb