SQL Server Native Client中的元数据发现

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

重要

已从 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中删除SQL Server Native Client(通常缩写为 SNAC)。 不建议在新应用程序开发工作中使用 SQL Server Native Client(SQLNCLI 或 SQLNCLI11)和旧版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)。 请在此后切换为使用新版 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新版的 Microsoft OLE DB Driver for SQL Server。 对于作为 SQL Server 数据库引擎组件随附的 SQLNCLI (版本 2012 到 2019) ,请参阅此支持生命周期异常

SQL Server 2012 (11.x) 中的元数据发现改进允许SQL Server Native Client应用程序确保执行查询时返回的列或参数元数据与执行查询前指定的元数据格式相同或兼容。 如果执行查询后返回的元数据与执行该查询之前指定的元数据格式不兼容,您将会收到错误。

在 bcp 和 ODBC 函数以及 IBCPSession 和 IBCPSession2 接口中,您现在可以指定延迟读取(延迟的元数据发现)以避免对查询输出操作执行元数据发现。 这样可以提高性能,并避免元数据发现失败。

如果在 SQL Server 2012 (11.x) 中使用 SQL Server Native Client 开发应用程序,但连接到早于 SQL Server 2012 (11.x) 的服务器版本,则元数据发现功能将与服务器版本相对应。

注解

SQL Server 2012 (11.x) 中增强了以下 bcp 函数,以提供改进的元数据发现:

使用 bcp_setbulkmode 指定元数据格式时,还会看到性能改进。

bcp_control 有一个新的 eOption 来控制bcp_readfmt的行为: BCPDELAYREADFMT

以下 ODBC 函数在 2012 SQL Server (11.x) 中得到了增强,以提供改进的元数据发现:

SQL Server 2012 (11.x) 中增强了以下 OLE DB 成员函数,以提供改进的元数据发现:

  • IColumnsInfo::GetColumnInfo

  • IColumnsRowset::GetColumnsRowset

  • ICommandWithParameters::GetParameterInfo(有关详细信息,请参阅 ICommandWithParameters

使用 IBCPSession::BCPSetBulkMode 指定元数据格式时,也会看到性能改进

由于在 SQL Server 2012 (11.x) 中添加了两个存储过程,因此可以在 SQL Server Native Client 中改进元数据发现:

  • sp_describe_first_result_set

  • sp_describe_undeclared_parameters

另请参阅

SQL Server Native Client 功能