IBCPSession::BCPColumns (Native Client OLE DB Provider)

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


The SQL Server Native Client (often abbreviated SNAC) has been removed from SQL Server 2022 (16.x) and SQL Server Management Studio 19 (SSMS). Both the SQL Server Native Client OLE DB provider (SQLNCLI or SQLNCLI11) and the legacy Microsoft OLE DB Provider for SQL Server (SQLOLEDB) are not recommended for new development. Switch to the new Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server going forward.

Sets the number of fields that are to be bound to the columns in a SQL Server table.


HRESULT BCPColumns(   
      DBCOUNTITEM nColumns);  


Internally it calls IBCPSession::BCPColFmt to set the default values for field data. These default values are obtained from the SQL Server column information that the provider internally retrieves when the table name is specified through IBCPSession::BCPInit.


This method can be called only after BCPInit has been called with a valid file name.

You should call this method only if you intend to use a user-file format that differs from the default. For more information about a description of the default user-file format, see the BCPInit method.

After calling the BCPColumns method, you must call the BCPColFmt method for each column in the user file to completely define a custom file format.


The total number of fields in the user file. Even if you are preparing to bulk copy data from the user file to a SQL Server table and do not intend to copy all fields in the user file, you must still set the nColumns argument to the total number of user-file fields. The skipped fields can then be specified through BCPColFmt.

Return Code Values

The method succeeded.

A provider-specific error occurred; for detailed information, use the ISQLServerErrorInfo interface.

The call to the method was unexpected. For example, the BCPInit method was not called before calling this method. Also occurs when this method is called more than once for a bulk copy operation.

Out-of-memory error.

See Also

IBCPSession (OLE DB)
Performing Bulk Copy Operations