如何使用Windows身份验证正确连接到SQL Server?

时间:2018-12-04 19:51:13

标签: c++ sql sql-server qt

我正在Qt中编写一个程序,该程序连接到本地数据库并使用QSqlDatabase写入该程序,但是我无法在程序和服务器之间建立有效的连接。

qdb = QSqlDatabase::addDatabase("QODBC");

qdb.setConnectOptions();
QString serverName = "KIRKWOOD\TESTCLOUD";
QString ipName = "tcp:10.150.94.197,1433";
QString dbName = "Puma";

QString connectionString =  QString("DRIVER={ODBC Driver 17 for SQL Server};Server=%1;Database=%2;Trusted_Connection=Yes;").arg(ipName).arg(dbName);

qdb.setDatabaseName(connectionString);

bool connectionSuccessful = qdb.open();

if (connectionSuccessful) {
    writeLogWithNewLine("Connected to database.");
}

else {
    writeLog("Failed to connect to database.");
    writeLogWithNewLine(qdb.lastError().text());
}

运行此代码时,我的日志中出现以下错误:

  

”无法连接到数据库。   [Microsoft] [SQL Server的ODBC驱动程序17] TCP提供程序:无法建立连接,因为目标计算机主动拒绝了它。 [Microsoft] [SQL Server的ODBC驱动程序17]建立与SQL Server的连接时,发生了与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。检查实例名称是否正确以及SQL Server是否配置为允许远程连接。有关更多信息,请参见SQL Server联机丛书。 [Microsoft] [用于SQL Server的ODBC驱动程序17]登录超时已过期QODBC3:无法连接“

当我用serverName替换ipName时,出现此错误:

  

”无法连接到数据库。   [Microsoft] [SQL Server ODBC驱动程序17]命名管道提供程序:无法打开与SQL Server [53]的连接。 [Microsoft] [SQL Server的ODBC驱动程序17]建立与SQL Server的连接时,发生了与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。检查实例名称是否正确以及SQL Server是否配置为允许远程连接。有关更多信息,请参见SQL Server联机丛书。 [Microsoft] [用于SQL Server的ODBC驱动程序17]登录超时已过期QODBC3:无法连接“

将驱动程序更改为“ SQL Server”时,出现此错误:

  

”无法连接到数据库。   [Microsoft] [ODBC SQL Server驱动程序] [DBNETLIB] SQL Server不存在或访问被拒绝。 [Microsoft] [ODBC SQL Server驱动程序] [DBNETLIB] ConnectionOpen(Connect())。 QODBC3:无法连接“

我已经做了很多研究,并对代码进行了很多更改,从更改驱动程序类型到将“ Trusted_Connection =是”的格式更改为“集成安全性= True”的格式,但是我没有运气从这些错误中得到了很多不同的东西。

这令人沮丧,因为在同一程序中,我能够使用SQL身份验证完全连接到虚拟数据库,最重要的是,使用同一台计算机,我能够通过Visual Studio的服务器资源管理器连接到数据库。我什至直接复制了Visual Studio中粘贴的连接字符串,但仍然一无所获。我还需要在这里做些什么吗?

非常感谢您提供反馈。

0 个答案:

没有答案