Metadata Discovery in SQL Server Native Client

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Important

The SQL Server Native Client (often abbreviated SNAC) has been removed from SQL Server 2022 (16.x) and SQL Server Management Studio 19 (SSMS). The SQL Server Native Client (SQLNCLI or SQLNCLI11) and the legacy Microsoft OLE DB Provider for SQL Server (SQLOLEDB) are not recommended for new application development. Switch to the new Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server or the latest Microsoft ODBC Driver for SQL Server going forward. For SQLNCLI that ships as a component of SQL Server Database Engine (versions 2012 through 2019), see this Support Lifecycle exception.

The metadata discovery improvement in SQL Server 2012 (11.x) allows SQL Server Native Client applications to ensure that column or parameter metadata returned from the execution of a query is identical to or compatible with the metadata format you specified before you executed the query. You will receive an error if the metadata returned after query execution is not compatible with the metadata format you specified before query execution.

In bcp and ODBC functions, and IBCPSession and IBCPSession2 interfaces, you can now specify a delayed read (delayed metadata discovery) to avoid metadata discovery for query out operations. This improves performance and eliminates metadata discovery failures.

If you develop an application using SQL Server Native Client in SQL Server 2012 (11.x) but connect to a server version earlier than SQL Server 2012 (11.x), metadata discovery functionality will correspond to the version of the server.

Remarks

The following bcp functions have been enhanced in SQL Server 2012 (11.x) to provide improved metadata discovery:

You will also see a performance improvement when specifying metadata format using bcp_setbulkmode.

bcp_control has a new eOption to control the behavior of bcp_readfmt: BCPDELAYREADFMT.

The following ODBC functions have been enhanced in SQL Server 2012 (11.x) to provide improved metadata discovery:

The following OLE DB member functions have been enhanced in SQL Server 2012 (11.x) to provide improved metadata discovery:

  • IColumnsInfo::GetColumnInfo

  • IColumnsRowset::GetColumnsRowset

  • ICommandWithParameters::GetParameterInfo (see ICommandWithParameters for more information)

You will also see a performance improvement when specifying metadata format using IBCPSession::BCPSetBulkMode

The improved metadata discovery in SQL Server Native Client is possible because of the addition of two stored procedures in SQL Server 2012 (11.x):

  • sp_describe_first_result_set

  • sp_describe_undeclared_parameters

See Also

SQL Server Native Client Features