title: SQLNCLI is Deprecated, but is that only for SQLNCLI OLEDB, or for SQLNCLI ODBC as well?
body: <p>We have an application written in C (not c++) that uses sqlncli.h, specifically, the ODBC implementation and not OLEDB. <a href="https://docs.microsoft.com/en-us/sql/relational-databases/native-client/sql-server-native-client?view=sql-server-ver15" rel="nofollow noreferrer">According to Microsoft</a></p>
  <blockquote>
  <p>The SQL Server Native Client (SQLNCLI) remains deprecated and it is not recommended to use it for new development work. Instead, use the new Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) which will be updated with the most recent server features.</p>
  </blockquote>
  <p>This quote links to the <a href="https://docs.microsoft.com/en-us/sql/connect/oledb/oledb-driver-for-sql-server?view=sql-server-ver15" rel="nofollow noreferrer">MSOLEDBSQL article</a> which explains how to build applications with MSOLEDBSQL indicating you should:</p>
  <ol>
  <li>
  <blockquote>
  <p>To use the new Microsoft OLE DB Driver for SQL Server in existing applications, you should plan to convert your connection strings from SQLOLEDB or SQLNCLI, to MSOLEDBSQL.</p>
  </blockquote>
  </li>
  </ol>
  <p>and</p>
  <ol start="2">
  <li>Use the new headers (article it links to is <a href="https://docs.microsoft.com/en-us/sql/connect/oledb/applications/using-the-oledb-driver-for-sql-server-header-and-library-files?view=sql-server-ver15" rel="nofollow noreferrer">here</a>)</li>
  </ol>
  <p>It's that simple, right? Not really, because we've tried to follow these instructions and implement the new header (msoledbsql.h) and it doesn't seem to support older data types such as DBINT which are from sqlncli.h. So, I'm thinking at this point the deprecation announcement may not pertain to ODBC. And the comment</p>
  <blockquote>
  <p>As such, backwards compatibility with applications currently using SNAC 11 is maintained in this new release</p>
  </blockquote>
  <p><a href="https://docs.microsoft.com/en-us/archive/blogs/sqlnativeclient/released-microsoft-ole-db-driver-for-sql-server" rel="nofollow noreferrer">found here</a> only pertains to OLEDB</p>
  <p>My question is that if you are using SQLNCLI ODBC (and not SQLNCLI OLEDB), it seems that is not actually deprecated. Is that correct? As an example, the deprecation warning exists for <a href="https://docs.microsoft.com/en-us/sql/relational-databases/native-client/ole-db/sql-server-native-client-ole-db?view=sql-server-ver15" rel="nofollow noreferrer">OLEDB here</a>, but not for the ODBC page <a href="https://docs.microsoft.com/en-us/sql/relational-databases/native-client/odbc/sql-server-native-client-odbc?view=sql-server-ver15" rel="nofollow noreferrer">here</a>.</p>
  <p>Thanks in advance for the help.</p>