Lesson Learned #284:Error requesting access token,HTTP status 400,expected 200.SQL State was: CE275

This post has been republished via RSS; it originally appeared at: Azure Database Support Blog articles.

We got an issue that our customer is migrating a WIN32 C++ application from on-prem to Azure. When connecting to Azure they got the following error message: [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]Error requesting access token, HTTP status 400, expected 200. SQL State was: CE275; Native Error code was: 0.

 

Other additional information about the error are: 

  • [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]Failed to authenticate the user '' in Active Directory (Authentication option is 'ActiveDirectoryMSI').
  •  [Microsoft][ODBC Driver 18 for SQL Server]TCP Provider: Timeout error [258].  (258)
  •  [Microsoft][ODBC Driver 18 for SQL Server]Unable to complete login process due to delay in login response (258)
  •  [Microsoft][ODBC Driver 18 for SQL Server]Login timeout expired (0)

 

Our customer is changing the connection using of their application using ODBC (API) from Windows Integrated authentication to Azure Active Directory in Azure SQL with User Managed Identity and they found this error message calling SQLConnect function:

 

dwResult = SQLConnect(hDefaultDBC, (SQLCHAR*)szDataSourceName, (SQLSMALLINT)strlen(szDataSourceName), (SQLCHAR*)szUserName, (SQLSMALLINT)strlen(szUserName),(SQLCHAR*)szPassword, (SQLSMALLINT)strlen(szPassword));

 

In this situation happened when szUserName is empty and we assume the will take this information from LoginID specified in the ODBC DSN. At this point we found out that giving the value of szUserName the UID/object principal id, the issue was resolved. 

 

Enjoy!

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.