我正在尝试通过 C++ 程序连接到 Azure SQL。然而它失败了,我发现了
SQLGetDiagRec
和 SQLGetDiagField
的错误。 SQLSTATE 为 HY024
,并带有错误消息 [Microsoft][ODBC Driver Manager] Invalid argument value
下面是我正在使用的驱动程序连接字符串
const char* cConnectString = "Driver=ODBC Driver 18 for SQL Server;Server=tcp:tmusqldev.database.windows.net,1433;Uid=tmu-admin;Pwd={PASSWORD};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;";
SQLDriverConnect( // SQL_NULL_HDBC
hdbc,
nullptr,
(SQLWCHAR*)cConnectString,
strlen(cConnectString),
OutConnStr,
255,
&OutConnStrLen,
SQL_DRIVER_PROMPT);
当我测试来自
ODBC Data Source Administrator
的连接时,它通过了。我已附上相同的屏幕截图。
有人可以建议这里可能出了什么问题吗?我尝试过添加和删除多个参数,但它有相同的错误。
请尝试以下操作:
// Connect to the driver. Use the connection string if supplied
// on the input, otherwise let the driver manager prompt for input.
TRYODBC(hDbc,
SQL_HANDLE_DBC,
SQLDriverConnect(hDbc,
GetDesktopWindow(),
pwszConnStr,
SQL_NTS,
NULL,
0,
NULL,
SQL_DRIVER_COMPLETE));
在这里您将找到用于连接到 Azure SQL 的完整 C++ ODBC 示例。
不确定,这是否有帮助,而且我没有找到答案,但与我们的 SQL 管理员/开发人员进行了一些挖掘,他发现该实例正在同步或繁忙。我切换到另一个实例并且它有效。全部归功于 KvdW!
错误:('HY024','[HY024] [Microsoft][ODBC Driver 18 for SQL Server]属性值无效')