使用 SQL Server Native Client 头文件和库文件

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)

重要

SQL Server Native Client (SNAC) 未随附:

  • SQL Server 2022 (16.x) 及更高版本
  • SQL Server Management Studio 19 及更高版本

不建议使用 SQL Server Native Client(SQLNCLI 或 SQLNCLI11)和旧的 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)进行新的应用程序开发。

对于新项目,请使用以下驱动程序之一:

对于作为 SQL Server 数据库引擎组件(版本 2012 到 2019)随附的 SQLNCLI,请参阅此支持生命周期特例

SQL Server Native Client 标头和库文件随 SQL Server 一起安装。 开发应用程序时,应将开发所需的所有文件复制到开发环境并进行安装,这一点非常重要。 有关安装和重新分发 SQL Server Native Client 的详细信息,请参阅 安装 SQL Server Native Client

SQL Server Native Client 标头和库文件安装在以下位置:

%PROGRAM FILES%\Microsoft SQL Server\110\SDK

SQL Server Native Client 头文件 (sqlncli.h) 可用于将 SQL Server Native Client 数据访问功能添加到自定义应用程序。 SQL Server Native Client 头文件包含利用 SQL Server 2005(9.x)中引入的新功能所需的所有定义、属性、属性和接口。

除了 SQL Server Native Client 头文件外,还有一个 sqlncli11.lib 库文件,该文件是 ODBC 的 SQL Server 大容量复制程序(BCP)功能的导出库。

SQL Server Native Client 头文件与用于Microsoft数据访问组件(MDAC)的 sqloledb.h 和 odbcss.h 头文件向后兼容,但不包含 SQLOLEDB 的 CLSID(MDAC 随附的 SQL Server 的 OLE DB 提供程序)或 XML 功能的符号(SQL Server Native Client 不支持)。

ODBC 应用程序不能在同一程序中引用 SQL Server Native Client 标头 (sqlncli.h) 和 odbcss.h。 即使未使用 SQL Server 2005(9.x)中引入的任何功能,SQL Server Native Client 头文件也会取代较旧的 odbcss.h。

使用 SQL Server Native Client OLE DB 访问接口的 OLE DB 应用程序只需引用 sqlncli.h。 如果应用程序同时使用 MDAC(SQLOLEDB)和 SQL Server Native Client OLE DB 提供程序,则可以同时引用 sqloledb.h 和 sqlncli.h,但对 sqloledb.h 的引用必须首先出现。

使用 SQL Server Native Client 头文件

若要使用 SQL Server Native Client 头文件,必须在 C/C++ 编程代码中使用 include 语句。 以下部分说明如何在 OLE DB 和 ODBC 应用程序中使用该头文件。

注意

SQL Server Native Client 标头和库文件只能使用 Visual Studio C++ 2002 或更高版本进行编译。

OLE DB

若要在 OLE DB 应用程序中使用 SQL Server Native Client 头文件,请使用以下编程代码行:

#define _SQLNCLI_OLEDB_  
include "sqlncli.h";  

注意

如果应用程序同时使用 OLE DB 和 ODBC API,应省略上面显示的第一行代码。 此外,如果应用程序具有 sqloledb.h 的 include 语句,则 sqlncli.h 的 include 语句必须位于该语句之后。

通过 SQL Server Native Client 创建与数据源的连接时,请使用“SQLNCLI11”作为提供程序名称字符串。

ODBC

若要在 ODBC 应用程序中使用 SQL Server Native Client 头文件,请使用以下编程代码行:

#define _SQLNCLI_ODBC_  
include "sqlncli.h";  

注意

如果应用程序同时使用 OLE DB 和 ODBC API,则应省略上面所示的第一行代码。 此外,如果应用程序的 odbcss.h 具有 #include 语句,则应删除该语句。

通过 SQL Server Native Client 创建与数据源的连接时,请使用“SQL Server Native Client 11.0”作为驱动程序名称字符串。

基于版本的组件名称和属性

properties SQL Server Native Client

SQL Server 2005
SQL Server Native Client 10.0

SQL Server 2008
SQL Server Native Client 11.0

SQL Server 2012 (11.x)
MDAC
ODBC 驱动程序名称 SQL Native Client SQL Server Native Client 10.0 SQL Server Native Client 11.0 SQL Server
ODBC 头文件名 Sqlncli.h Sqlncli.h Sqlncli.h Odbcss.h
ODBC 驱动程序 DLL Sqlncli.dll Sqlncl10.dll Sqlncl11.dll sqlsrv32.dll
BCP API 的 ODBC 库文件 Sqlncli.lib Sqlncli10.lib Sqlncli11.lib Odbcbcp.lib
BCP API 的 ODBC DLL Sqlncli.dll Sqlncli10.dll Sqlncli11.dll Odbcbcp.dll
OLE DB PROGID SQLNCLI SQLNCLI10 SQLNCLI11 SQLOLEDB
OLE DB 头文件名 Sqlncli.h Sqlncli.h Sqlncli.h Sqloledb.h
OLE DB 访问接口 DLL Sqlncli.dll Sqlncli10.dll Sqlncli11.dll Sqloledb.dll

sqlncli.h 通过SQLNCLI_VER宏支持多个版本的 SQL Server Native Client。 默认情况下,SQLNCLI_VER默认为最新版本的 SQL Server Native Client。 若要生成使用 sqlncli10.dll 而非 sqlncli11.dll 的应用程序,请将 SQLNCLI_VER 设置为 10。

静态链接和 BCP 函数

在某一应用程序使用 BCP 函数时,对于该应用程序十分需要特别注意的是,应在连接字符串中指定来自用于编译该应用程序的头文件和库随附的相同版本的驱动程序。

例如,如果使用 SQL Server Native Client 编译应用程序,并从 \Program Files\Microsoft SQL Server\110\SDK 编译关联的库文件(sqlncli11.lib)和头文件(sqlncli.h),请确保在 连接字符串 中指定(使用 ODBC 作为示例)“DRIVER={SQL Server Native Client 11.0}”。

有关详细信息,请参阅执行大容量复制操作

另请参阅

使用 SQL Server Native Client 生成应用程序