4

我有一个在 Windows 64 下运行的本机 C++ 应用程序,它不使用 ATL(也不会)。我希望能够通过网络从我的应用程序连接到 SQL Server 2012。

我有以下要求:

  • 性能是关键

  • C++ 只会插入记录(比如通过调用存储过程),不会插入其他记录(没有选择、删除或更新)。

  • 记录插入应该是非阻塞的(异步)。

我将选择范围缩小到 OLE DB 和 ODBC,因为它们满足上述标准。然而,互联网上似乎有很多关于使用什么的相互矛盾的建议。例子:

我真的很困惑,想就我的标准访问 SQL Server 的最佳技术发表更多意见。

4

2 回答 2

4

OleDB 和 ODBC 都使用 SQLNCLI。请参阅按版本列出的组件名称和属性表,观察 Sqlncli.dll/Sqlncli10.dll/Sqlncli11.dll 如何成为 ODBC 和 OleDB 的驱动程序。

如果您查看数据访问技术路线图,您会发现 ODBC 和 OleDB 都是最新的并受支持。不推荐使用的是 SQLOLEDB 和 SQLODBC,它们是用于 OleDB 和 ODBC 的旧 MDAC SQL Server 驱动器(即 sqlsrv32.dll 和 Sqloledb.dll)。对于它们都有升级路径和建议,请参阅从 MDAC 将应用程序更新到 SQL Server Native Client

所以结论是您可以安全地继续使用 ODBC 和 OleDB,只要确保您使用基于现代 SLNCLI 的驱动程序,而不是旧的、已弃用的 MDAC 驱动程序。

使用已弃用的驱动程序的主要风险是缺乏对新数据类型(例如地理、层次结构、日期时间2 等)的支持。

于 2013-03-23T20:36:20.263 回答
0

多年前我体验过 OleDB(使用 ATL)和 ODBC(使用 MFC)。

但是接口很少是瓶颈,通常插入/更新占主导地位(实际上,我使用批量复制+存储过程执行了大型插入/更新)。

无论如何,我会建议一种中间(第三种?)方式:OTL,这使得 C++ / ODBC 可以忍受。

于 2013-03-23T20:46:54.403 回答