This article is contributed. See the original author and article here.

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!

Brought to you by Dr. Ware, Microsoft Office 365 Silver Partner, Charleston SC.