我正在为我的项目实现SQL Server的Windows身份验证功能,并遇到了这个奇怪的问题。
在连接字符串中,我添加了一个新参数Trusted_Connection
,如果我们必须启用Windows身份验证功能,我将其设置为yes
,否则将其设置为no
。即使它应该默认为no
。
该功能正常工作,直到我尝试在连接字符串中传递空的用户名和密码:
Driver={SQL Server};Server=localhost;Database=test;UID=;PWD=;Trusted_Connection=no
奇怪的是,这与数据库建立了连接,似乎使用了Windows用户身份验证。通过从没有所需权限但失败的其他用户运行来测试。
用于连接SQL Server的API是:
SQLDriverConnect(
hDbc,
NULL,
ConnStr,
SQL_NTS,
NULL,
0,
NULL,
SQL_DRIVER_COMPLETE
);
此API的预期行为是什么?如果是这样,是否有任何链接可以获取此信息?
提前致谢。
答案 0 :(得分:0)
" SQL Server" Windows附带的ODBC驱动程序是仅为向后兼容性而提供的旧驱动程序。无论Trusted_Connection规范如何,它都会将空UID解释为Windows身份验证请求。现代驱动程序(SQL Server Native Client和SQL Server的ODBC驱动程序n)遵循Trusted_Connection规范。
因此使用" ODBC驱动程序11用于SQL Server"解决了我的问题。