如何在将Visual Studio C++控制台应用程序连接到Microsoft SQL Server时修复"

How to fix “SQL Server does not exist or access denied.” when connecting a Visual Studio C++ console app to a Microsoft SQL Server

本文关键字:Server SQL Microsoft quot 连接 Visual Studio 应用程序 控制台 C++      更新时间:2023-10-16

我正试图在Visual Studio 2019的控制台应用程序中连接Microsoft SQL Server数据库。

我收到一个错误:SQL Server不存在或访问被拒绝。

我怀疑我可能有错误的连接字符串,所以我使用SQLDriverConnect函数和SQL_DRIVER_COMPLETE_REQUIRED来提示一个窗口,这样我就可以手动选择要连接的服务器。

SQLDriverConnect(SQLConnHandle, desktopHandle, (SQLCHAR*)"", SQL_NTS, OutConString, 1024, NULL, SQL_DRIVER_COMPLETE_REQUIRED)

注:OutConnectionString是第5个参数,InConnectionString是的第3个参数

这样,我就可以打印返回到OutConnectionString的连接字符串,还可以访问数据库并打印其内容。

但当我试图将OutConnectionString复制到InConnectionString时,它仍然会返回相同的错误。

SQLDriverConnect(SQLConnHandle, NULL, (SQLCHAR*)"DSN=JoelDB;UID=myID;PWD=myPW;WSID=JE-ACCOUNTS;DATABASE=myDB;Network=DBMSSOCN;Address=JE-ACCOUNTSSQLEXPRESS,1433", SQL_NTS, OutConString, 1024, NULL, SQL_DRIVER_NOPROMPT)

我已经尝试在windows防火墙中为端口1433创建一个异常,并从该网站提出了其他建议,但没有成功。

https://www.sqlserverlogexplorer.com/database-does-not-exist-access-denied/

我知道连接存在,因为我可以通过SQL_DRIVER_COMPLETE_REQUIRED参数进行连接,而且我还可以通过"工具">"连接到数据库"在Visual Studio中手动加载数据库。

我想手动将连接字符串放入代码中,因为每次运行/调试程序时都不方便通过提示窗口来选择我想要的数据库。

我只通过删除连接字符串中的地址和网络就解决了这个问题。

SQLDriverConnect(SQLConnHandle, NULL, (SQLCHAR*)"DSN=JoelDB;UID=myID;PWD=myPW;WSID=JE-ACCOUNTS;DATABASE=myDB;", SQL_NTS, OutConString, 1024, NULL, SQL_DRIVER_NOPROMPT)