INF: ODBC Messages on SQL Server Connections (143339)



The information in this article applies to:

  • Microsoft SQL Server 6.0
  • Microsoft SQL Server 6.5
  • Microsoft SQL Server 7.0

This article was previously published under Q143339

SUMMARY

A successful connection to Microsoft SQL Server using the Microsoft SQL Server ODBC drivers will always return SQL_SUCCESS_WITH_INFO. If the application then calls SQLError() until it returns SQL_NO_DATA_FOUND there will be at least one 5703 and one or two 5701 messages.

MORE INFORMATION

SQL Server always issues at least two informational messages on a successful connection from any ODBC or DB-library client: A 5701 message, indicating which database on the server the user has been logged into, and a 5703 message, indicating what language the server is using. SQL Server's DB-library API and the Microsoft SQL Server ODBC driver always make these messages available on successful connects in case the application needs to use this information.

When an ODBC application calls SQLError() after getting SQL_SUCCESS_WITH_INFO, it should expect the following messages:
  1. A 5701 message showing SQL Server initially putting the user's context into the default database defined at the server for the login ID used in the connection.
  2. A 5703 message showing the language being used on the server.
  3. If either the ODBC datasource has a default database specified, or the application specified the DATABASE= keyword on SQLDriverConnect() or SQLBrowseConnect(), then there will be a second 5701 message showing the user's context being switched to the database requested.
For example, the following shows the messages returned on a successful connect by the SA login, which has its default database at the server defined as the master database, to a server running US English using an ODBC datasource which specifies pubs as the default database.
   Full Connect:

      szSqlState = "01000", *pfNativeError = 5701,
      szErrorMsg="[Microsoft][ODBC SQL Server Driver][SQL Server]
             Changed database context to 'master'."
      szSqlState = "01000", *pfNativeError = 5703,
      szErrorMsg="[Microsoft][ODBC SQL Server Driver][SQL Server]
             Changed language setting to 'us_english'."
      szSqlState = "01000", *pfNativeError = 5701,
      szErrorMsg="[Microsoft][ODBC SQL Server Driver][SQL Server]
             Changed database context to 'pubs'."

   Successfully connected to DSN 'ab60def'.
				

Applications can simply ignore these 5701 and 5703 messages, they are purely informational. Applications cannot, however, ignore a return of SQL_SUCCESS_WITH_INFO return code on the SQLConnect(), SQLDriverConnect(), or SQLBrowseConnect(). This is because messages other than 5701s and 5703s may be returned that do require action. For example, if a driver connects to a SQL Server with outdated system stored procedures, the following will be one of the messages returned through SQLError():
   SqlState:   01000
   pfNative:   0
   szErrorMsg: "[Microsoft][ODBC SQL Server Driver]The ODBC
               catalog stored procedures installed on server
               ab421def are version 02.00.4127; version 06.00.0115
               or later is required to ensure proper operation.
               Please contact your system administrator."
				

Applications need to code their error handling routines for SQL Server connections to call SQLError() until it returns SQL_NO_DATA_FOUND, and act on any messages other than the ones that return a pfNative code of 5701 or 5703.

Modification Type:MinorLast Reviewed:3/14/2005
Keywords:KB143339